软件编程
位置:首页>> 软件编程>> Android编程>> Android开发实现横向列表GridView横向滚动的方法【附源码下载】

Android开发实现横向列表GridView横向滚动的方法【附源码下载】

作者:seekrg  发布时间:2021-07-13 17:27:26 

标签:Android,GridView

本文实例讲述了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;
 }
}
}

4.完整实例代码点击此处本站下载

希望本文所述对大家Android程序设计有所帮助。

来源:http://blog.csdn.net/u013360656/article/details/45288791

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com