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
* @summary 博客地址欢迎访问: http://www.cnblogs.com/_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.项目代码如下链接:
http://files.cnblogs.com/_ymw/HorizontalListView_%E5%8D%9A%E5%AE%A2%E9%99%84%E4%BB%B6.rar
Android 横向列表GridView 实现横向滚动的更多相关文章
- Android网格视图(GridView)
GridView的一些属性: 1.android:numColumns=”auto_fit” //GridView的列数设置为自动,也可以设置成2.3.4…… 2.android:columnWi ...
- [转]Android网格视图(GridView)
GridView的一些属性: 1.android:numColumns=”auto_fit” //GridView的列数设置为自动,也可以设置成2.3.4…… 2.android:columnWi ...
- android开发之gridView的一些属性。(项目经验总结)
1.android:numColumns="auto_fit" //GridView的列数设置为自动 2.android:columnWidth="90dp &quo ...
- Android listview和gridview以及view的区别
GridView 可以指定显示的条目的列数. listview一般显示的条目的列数都是一列 如果是列表(单列多行形式)的使用ListView,如果是多行多列网状形式的优先使用GridView andr ...
- Android 网格视图GridView的使用
网格视图GridView的排列方式与矩阵类似,当屏幕上有很多元素(文字.图片或其他元素)需要按矩阵格式进行显示时,就可以使用GridView控件来实现. 本文将以一个具体的实例来说明如何使用GridV ...
- [Android] Android最简单ScrollView和ListView滚动冲突解决方案
[Question]问题描述: 单独的ListView列表能自动垂直滚动,但当将ListView嵌套在ScrollView后,会和ScrollView的滚动滑块冲突,造成ListView滑块显示不完整 ...
- Android ScrollView嵌套GridView导致GridView只显示一行item
Android ScrollView嵌套GridView导致GridView只显示一行item Android ScrollView在嵌套GridView时候,会导致一个问题发生:GridView只显 ...
- Android中使用GridView和ImageViewSwitcher实现电子相册简单功能
我们在手机上查看相册时,首先看到的是网格状的图片展示界面,然后我们选择想要欣赏的照片点击进入,这样就可以全屏观看该照片,并且可以通过左右滑动来切换照片.如下图的显示效果: 首先我们先罗列一下本次实现所 ...
- Android控件Gridview实现仿支付宝首页,Fragment底部按钮切换和登录圆形头像
此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能:Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局. 效果 ...
随机推荐
- SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID
如题: SDK location not found. Define location with sdk.dir in the local.properties file or with an AND ...
- luogu4196 [CQOI2006]凸多边形 半平面交
据说pkusc出了好几年半平面交了,我也来水一发 ref #include <algorithm> #include <iostream> #include <cstdi ...
- spark发现新词
package com.icklick.spark.wordSegment import org.apache.log4j.{ Level, Logger } import org.apache.sp ...
- 批量修改Linux文件夹下所有文件大小写
小写转大写: [zengs@SYS SOS]$ for cpplive in *; do mv $cpplive `echo $cpplive|tr [a-z] [A-Z]`; done 大写转小写: ...
- 《Cracking the Coding Interview》——第2章:链表——题目6
2014-03-18 02:41 题目:给定一个带有环的单链表,找出环的入口节点. 解法1:用hash来检测重复节点肯定是容易想而且效率也高的好办法. 代码: // 2.6 You have a ci ...
- 用JAX-WS在Tomcat中发布WebService
JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架 ...
- ansible自动安装jdk
脚本功能:安装jdk 测试环境:CentOS6.7 说明: 1.卸载系统自带的openjdk,重新安装Oracle jdk,支持Hotspot,性能更好,更稳定. 2.jdk软件包按文档说明进行定制( ...
- win10激活(转)
批处理命令激活方法,此方法和激活码可激活 180天 先来说下使用激活码使用方法: 1.同时按下Win键+X,然后选择命令提示符(管理员) 2.在命令提示符中依次输入: slmgr.vbs /upk ( ...
- 第九章 广播和本地组播(IGMP和MLD)
距离项目开启已经过去了一段时间,这段时间内自己学习的内容也算挺多的,但是也较容易遗忘,之后应该在空余的时间内多翻翻博客,更加清楚传统计算机网络的运作. 由于51要出去玩,更要好好利用好最近的时间.完成 ...
- 第二章 Internet 地址结构
注意: 这个系列的博客只是为了巩固我学习的知识,参考的价值不是很大,如果需要,请转到http://www.cnblogs.com/ZCplayground/p/7764436.html Interne ...