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

 更新时间:2018年01月03日 09:56:42   作者:seekrg  
这篇文章主要介绍了Android开发实现横向列表GridView横向滚动的方法,结合实例形式分析了Android横向列表GridView实现横向滚动的相关布局与功能实现技巧,并附带源码供读者下载参考,需要的朋友可以参考下

本文实例讲述了Android开发实现横向列表GridView横向滚动的方法。分享给大家供大家参考,具体如下:

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

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相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结

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

相关文章

  • Android之RecycleView实现指定范围的拖动效果

    Android之RecycleView实现指定范围的拖动效果

    这篇文章主要介绍了Android之RecycleView实现指定范围的拖动效果的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Android Studio 引入 aidl 文件的方法汇总

    Android Studio 引入 aidl 文件的方法汇总

    本文给大家分享的是在Android Studio中引入AIDL文件常用的两种方法,小伙伴们根据自己的情况自由选择,希望对大家能够有所帮助
    2017-11-11
  • Android开发自学笔记(一):Hello,world!

    Android开发自学笔记(一):Hello,world!

    这篇文章主要介绍了Android开发自学笔记(一):Hello,world!本文讲解了创建HelloWorld工程、编写代码、启动模拟器等步骤,需要的朋友可以参考下
    2015-04-04
  • Android布局优化之ViewStub控件

    Android布局优化之ViewStub控件

    ViewStub是一个非常轻量级的View,这篇文章主要为大家详细介绍了Android布局优化之ViewStub控件的使用方法以及注意事项,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android教程之开机流程全面解析

    Android教程之开机流程全面解析

    这篇文章主要介绍了Android开机流程,非常全面的分析了Android开机常见形式、函数调用与相关注意事项,需要的朋友可以参考下
    2016-06-06
  • Android实现长图文截图功能实例代码

    Android实现长图文截图功能实例代码

    这篇文章主要给大家介绍了关于Android实现长图文截图功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Android自定义View实现仿GitHub的提交活跃表格

    Android自定义View实现仿GitHub的提交活跃表格

    这篇文章主要介绍了Android自定义View实现仿GitHub的提交活跃表格,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-01-01
  • android 使用浏览器打开指定页面的实现方法

    android 使用浏览器打开指定页面的实现方法

    这篇文章主要介绍了android 使用浏览器打开指定页面的实现方法,本文通过实例文字说明的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • Android xml文件的序列化实现代码

    Android xml文件的序列化实现代码

    Android提供了XmlSerializer来实现XML文件的序列化。相比传统方式,更高效安全,需要的朋友可以参考下
    2014-02-02
  • 在Android中调用WebService实例

    在Android中调用WebService实例

    这篇文章主要介绍了在Android中调用WebService实例,有需要的朋友可以了解一下。
    2016-11-11

最新评论