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使GridView横向水平滚动的实现方式
  • Android开发基于ViewPager+GridView实现仿大众点评横向滑动功能
  • Android中实现多行、水平滚动的分页的Gridview实例源码
  • android ListView和GridView拖拽移位实现代码
  • Android GridView实现滚动到指定位置的方法
  • android中GridView的用法示例
  • android GridView多选效果的实例代码
  • Android开发之使用GridView展示图片的方法
  • Android开发学习笔记 Gallery和GridView浅析
  • Android GridView仿微信朋友圈显示图片
  • Android实现九宫格(GridView中各项平分空间)的方法
  • Android实现GridView中ImageView动态变换的方法
(0)

相关推荐

  • Android GridView仿微信朋友圈显示图片

    最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样. 利用GridView再适合不过了,GridView可以动态加载图片的数量,而且还比较规律,下面说一下自己的思路: 1.获取网络图片 2.初始化gridview,自定义适配器 3.根据图片数量设置gridview的列数 4.更新适配器 下面贴上部分源码并给大家解析一下 一.首先是GridView的item <com.view.SquareLayout xmlns:android="http://schemas

  • Android开发基于ViewPager+GridView实现仿大众点评横向滑动功能

    先给大家展示下效果图,如果大家大家感觉不错,请参考实现思路及代码 1 ViewPager类提供了多界面切换的新效果. 新效果有如下特征: [1] 当前显示一组界面中的其中一个界面. [2] 当用户通过左右滑动界面时,当前的屏幕显示当前界面和下一个界面的一部分. [3]滑动结束后,界面自动跳转到当前选择的界面中 2 介绍里面几个比较重要的方法与接口 1,OnPageChangeListener ViewPager页面进行切换监听接口 其中我们经常要实现public void onPageSelec

  • Android实现GridView中ImageView动态变换的方法

    本文实例讲述了Android实现GridView中ImageView动态变换的方法.分享给大家供大家参考.具体如下: 使用YY影音的时候,发现点击GridView的某一个Item,Item里面的图标会在按下的时候发生变换,变成另外一个图片. 自己写了一个类似的demo,具体步骤如下: 1.创建一个包含Grid的Acitity 2.创建item.xml 里面包含一个imageview和一个textview 3.自定义一个adapter,从baseadapter继承 4.在getView中为每个im

  • 详解Android使GridView横向水平滚动的实现方式

    Android为我们提供了竖直方向的滚动控件GridView,但如果我们想让它水平滚动起来,就需要自己实现了. 以下使用的测试数据datas集合都为List<ResolveInfo>类型,用来存储手机中的所有App public static List<ResolveInfo> getAppData(Context context) { PackageManager packageManager = context.getPackageManager(); Intent mainI

  • Android实现九宫格(GridView中各项平分空间)的方法

    本文实例讲述了Android实现九宫格(GridView中各项平分空间)的方法.分享给大家供大家参考.具体如下: 项目需要做一个九宫格(也不一定是9的,4宫格.16宫格.4x3宫格...),封了 一个宫格,它能够根据为它分配的空间来自动的调节宫中各项的尺寸. 从TableLayout集成来的,因此如果你直接在设计器上使用该封装的话需要把它自动加进去的那几个TableRow删除一下. 类名为AdvancedGridView,代码如下: import android.content.Context;

  • android中GridView的用法示例

    在Android程序设计中GridView跟ListView都是比较常用的多控件布局,而GridView更是实现九宫图的首选!本文就是介绍如何使用GridView实现九宫图.GridView的用法很多,网上介绍最多的方法就是自己实现一个ImageAdapter继承BaseAdapter,再供GridView使用,类似这种的方法本文不再重复,本文介绍的GridView用法跟之前介绍过的ListView极其类似. 我们先来看看本文代码运行的结果: 本文需要添加/修改3个文件:main.xml.nig

  • android GridView多选效果的实例代码

    具体代码如下: main.xml 复制代码 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:background="#000000" android:layout_width="fill_parent"

  • Android开发学习笔记 Gallery和GridView浅析

    一.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery还可以和ImageSwitcher组件结合使用来实现一个通过缩略图来浏览图片的效果. Gallery常用的XML属性 属性名称 描述 android:animationDuration 设置布局变化时动画的转换所需的时间(毫秒级).仅在动画开始时计时.该值必须是整数,比如:100. android:gravity 指定在对象的X和Y轴上如何放置内

  • Android GridView实现滚动到指定位置的方法

    当一个列表项目很多,并且每个项目可以进入到其它Activity或者Fragment时,保存之前列表的位置是一个比较不错的功能, 今天研究了一下怎么保存浏览位置,发现GridView和它的父类中有4个相关的方法: 复制代码 代码如下: public void smoothScrollToPosition (int position) 滚动到position指定的位置,api level 11之下可用 *当你滚动完后,返回列表,能正常滚动,但是你再次从列表的项目返回后,滚动失效,就是只能滚动一次,我

  • android ListView和GridView拖拽移位实现代码

    关于ListView拖拽移动位置,想必大家并不陌生,比较不错的软件都用到如此功能了.如:搜狐,网易,百度等,但是相比来说还是百度的用户体验较好,不偏心了,下面看几个示例:             首先说一下:拖拽ListView的item就不应该可以任意移动,只应该在ListView所在的范围内,而网易的你看看我都可以移动到状态栏了,虽然你做了处理,但是用户体验我个人感觉不好,在看看百度的,不仅控制了移动范围,更不错的百度的移动起来会时时的换位,看起来相当的形象,所以我认为这样相当的棒.说明一点

  • Android开发之使用GridView展示图片的方法

    本文实例讲述了Android使用GridView展示图片的方法.分享给大家供大家参考,具体如下: 今天说说GridView的使用. 所谓GvidView翻译过来就是网格布局:是一个ViewGroup以网格显示它的子视图(view)元素,即二维的.可滚动的网格.网格元素通过ListAdapter自动插入到网格. 这个GridView用处特别多,我这里是用来展示广告的.2*3的广告位置. 废话少说先看个效果图,有图就可以说个XX,对吧,大家都懂的. 大家可以看到搜索下面的那6个块,效果布局还行吧,哈

  • Android中实现多行、水平滚动的分页的Gridview实例源码

    功能要求: (1)比如每页显示2X2,总共2XN,每个item显示图片+文字(点击有链接). 如果单行水平滚动,可以用Horizontalscrollview实现. 如果是多行水平滚动,则结合Gridview(一般是垂直滚动的)和Horizontalscrollview实现. (2)水平滚动翻页,下面有显示当前页的icon. 1.实现自定义的HorizontalScrollView(HorizontalScrollView.java): 因为要翻页时需要传当前页给调用者,所以fling函数中自己

随机推荐