博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GridView 多行列表展示,item宽度设置无效的原因
阅读量:4322 次
发布时间:2019-06-06

本文共 2298 字,大约阅读时间需要 7 分钟。

  其实GridView的用法同listView用法一样,不过它可以较为简单的实现多列列表的展示。主要步骤就是设置数据,构建Adapter,再将Adapter设置给GridView。

GirdView的一些常用属性:

android:numColumns="auto_fit" --------列数设置为自动

android:columnWidth="90dp",----------每列的宽度,也就是Item的宽度
android:stretchMode="columnWidth"------缩放与列宽大小同步
android:verticalSpacing="10dp"----------垂直边距
android:horizontalSpacing="10dp"-------水平边距

下面就给出一个较为简单的实现案例:

View Code

主要是指定了GridView的列数,行列之间的间距等属性。

每一个view的布局文件

View Code

最后是Activity,simpleAdapter的构建的最后2个参数顺序需要一致,否则会出错。

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ArrayList
>list = new ArrayList(); int n=30; for(int i= 0 ; i< n ; i ++) { Map
map = new HashMap
(); map.put("image" , R.drawable.a7);//为了简单,将所有图弄一样 map.put("number" , "Apple"+i); list.add(map); } String [] dataItem=new String[]{"image","number"}; int []views = {R.id.image , R.id.text}; SimpleAdapter adpter = new SimpleAdapter(this , list ,R.layout.adapter_item ,dataItem , views); GridView gridView = (GridView) findViewById(R.id.grid_view); gridView.setAdapter(adpter); }}
View Code

 二、宽度无效

之前在网上见到,设置无效,是因为在inflate的时候parent置为空导致的顶层布局没有加载。而下面代码中,若只是新建一个textview,会发现设置宽高也无效,最终通过布局属性设置才生效,证明getview中返回的view必须含有布局属性,否则它的大小设置都无效。

public View getView(int position, View convertView, ViewGroup parent) {        //用button 会和gridview抢占监听事件,导致无法监听到gridview 的item点击事件        //        Button button = new Button(mContext);        TextView textView = new TextView(mContext);//        textView.setWidth(50);//        textView.setHeight(40);        textView.setGravity(Gravity.CENTER);        textView.setBackgroundColor(0Xffffff00);        textView.setText(functions[position]);        //不添加下面中的一个布局,则会发现textView 无论怎么设置宽高都无效//        textView.setLayoutParams(new GridView.LayoutParams(200,160));        textView.setLayoutParams(new RelativeLayout.LayoutParams(200,120));        return textView;    }
View Code

 

转载于:https://www.cnblogs.com/bokeofzp/p/6063829.html

你可能感兴趣的文章
[Hive - LanguageManual] Alter Table/Partition/Column
查看>>
可持久化数组
查看>>
去除IDEA报黄色/灰色的重复代码的下划波浪线
查看>>
Linux发送qq、网易邮件服务配置
查看>>
几道面试题
查看>>
【转】使用 WebGL 进行 3D 开发,第 1 部分: WebGL 简介
查看>>
js用正则表达式控制价格输入
查看>>
chromium浏览器开发系列第三篇:chromium源码目录结构
查看>>
java开发操作系统内核:由实模式进入保护模式之32位寻址
查看>>
第五讲:单例模式
查看>>
Python编程语言的起源
查看>>
Azure ARMTemplate模板,VM扩展命令
查看>>
(转)arguments.callee移除AS3匿名函数的侦听
查看>>
onNewIntent调用时机
查看>>
MYSQL GTID使用运维介绍(转)
查看>>
04代理,迭代器
查看>>
解决Nginx+PHP-FPM出现502(Bad Gateway)错误问题
查看>>
Java 虚拟机:互斥同步、锁优化及synchronized和volatile
查看>>
2.python的基本数据类型
查看>>
python学习笔记-day10-01-【 类的扩展: 重写父类,新式类与经典的区别】
查看>>