温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android开发如何实现横向列表GridView横向滚动

发布时间:2021-07-10 18:54:10 来源:亿速云 阅读:1262 作者:小新 栏目:移动开发

小编给大家分享一下Android开发如何实现横向列表GridView横向滚动,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

具体如下:

Android 横向列表实现,可左右滑动,如下图

Android开发如何实现横向列表GridView横向滚动

1. 主界面布局代码:activity_main.xml

a.包裹HorizontalScrollView控件是GirdView横向滚动的基本条件
b.GirdView外包裹LinearLayout是java代码中参数设置的必要条件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:orientation="vertical" >
 <HorizontalScrollView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_margin="5dp" >
  <LinearLayout
   android:layout_width="wrap_content"
   android:layout_height="fill_parent"
   android:layout_margin="10dp" >
   <GridView
    android:id="@+id/grid"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:numColumns="auto_fit"
    android:stretchMode="spacingWidthUniform" >
   </GridView>
  </LinearLayout>
 </HorizontalScrollView>
</LinearLayout>

2.主界面GridView列表子项布局文件:list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/itemlayout"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="vertical" >
 <ImageView
  android:id="@+id/ItemImage"
  android:layout_width="80.0dip"
  android:layout_height="80.0dip"
  android:layout_gravity="center_horizontal"
  android:src="@drawable/china" >
 </ImageView>
 <TextView
  android:id="@+id/tvCity"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  android:text="Title"
  android:textColor="#000000" >
 </TextView>
 <TextView
  android:id="@+id/tvCode"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_horizontal"
  android:text="Info"
  android:textColor="#000000" >
 </TextView>
</LinearLayout>

3.java实现代码:MainActivity.java

package com.example.horizontallistview;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
/***
 *
 * @author ymw
 */
public class MainActivity extends Activity {
 List<CityItem> cityList;
 RelativeLayout itmel;
 GridView gridView;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  LayoutInflater layoutInflater = (LayoutInflater) this
    .getSystemService("layout_inflater");
  gridView = (GridView) findViewById(R.id.grid);
  setData();
  setGridView();
 }
 /**设置数据*/
 private void setData() {
  cityList = new ArrayList<CityItem>();
  CityItem item = new CityItem();
  item.setCityName("深圳");
  item.setCityCode("0755");
  cityList.add(item);
  item = new CityItem();
  item.setCityName("上海");
  item.setCityCode("021");
  cityList.add(item);
  item = new CityItem();
  item.setCityName("广州");
  item.setCityCode("020");
  cityList.add(item);
  item = new CityItem();
  item.setCityName("北京");
  item.setCityCode("010");
  cityList.add(item);
  item = new CityItem();
  item.setCityName("武汉");
  item.setCityCode("027");
  cityList.add(item);
  item = new CityItem();
  item.setCityName("孝感");
  item.setCityCode("0712");
  cityList.add(item);
  cityList.addAll(cityList);
 }
 /**设置GirdView参数,绑定数据*/
 private void setGridView() {
  int size = cityList.size();
  int length = 100;
  DisplayMetrics dm = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(dm);
  float density = dm.density;
  int gridviewWidth = (int) (size * (length + 4) * density);
  int itemWidth = (int) (length * density);
  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    gridviewWidth, LinearLayout.LayoutParams.FILL_PARENT);
  gridView.setLayoutParams(params); // 设置GirdView布局参数,横向布局的关键
  gridView.setColumnWidth(itemWidth); // 设置列表项宽
  gridView.setHorizontalSpacing(5); // 设置列表项水平间距
  gridView.setStretchMode(GridView.NO_STRETCH);
  gridView.setNumColumns(size); // 设置列数量=列表集合数
  GridViewAdapter adapter = new GridViewAdapter(getApplicationContext(),
    cityList);
  gridView.setAdapter(adapter);
 }
 /**GirdView 数据适配器*/
 public class GridViewAdapter extends BaseAdapter {
  Context context;
  List<CityItem> list;
  public GridViewAdapter(Context _context, List<CityItem> _list) {
   this.list = _list;
   this.context = _context;
  }
  @Override
  public int getCount() {
   return list.size();
  }
  @Override
  public Object getItem(int position) {
   return list.get(position);
  }
  @Override
  public long getItemId(int position) {
   return position;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
   LayoutInflater layoutInflater = LayoutInflater.from(context);
   convertView = layoutInflater.inflate(R.layout.list_item, null);
   TextView tvCity = (TextView) convertView.findViewById(R.id.tvCity);
   TextView tvCode = (TextView) convertView.findViewById(R.id.tvCode);
   CityItem city = list.get(position);
   tvCity.setText(city.getCityName());
   tvCode.setText(city.getCityCode());
   return convertView;
  }
 }
 public class CityItem {
  private String cityName;
  private String cityCode;
  public String getCityName() {
   return cityName;
  }
  public void setCityName(String cityName) {
   this.cityName = cityName;
  }
  public String getCityCode() {
   return cityCode;
  }
  public void setCityCode(String cityCode) {
   this.cityCode = cityCode;
  }
 }
}

看完了这篇文章,相信你对“Android开发如何实现横向列表GridView横向滚动”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI