zoukankan      html  css  js  c++  java
  • GridView 多行列表展示,item宽度设置无效的原因

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

    GirdView的一些常用属性:

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

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

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.lammy.gridviewdemo.MainActivity">
    
        <GridView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/grid_view"
            android:verticalSpacing="10dp"
            android:horizontalSpacing="10dp"
            android:numColumns="3"
            />
    </RelativeLayout>
    View Code

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

    每一个view的布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent">
    
        <ImageView
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:id="@+id/image"
            android:scaleType="fitXY"
            />
        <TextView
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_below="@+id/image"
            android:textAlignment="center"
            android:id="@+id/text"
            />
    </RelativeLayout>
    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<Map<String , Object>>list = new ArrayList();
    
            int n=30;
            for(int i= 0 ; i< n ; i ++)
            {
                Map <String , Object>map  = new HashMap<String,Object>();
                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
  • 相关阅读:
    leetcode33. Search in Rotated Sorted Array
    pycharm 设置sublime text3 monokai主题
    django class Meta
    leetcode30, Substring With Concatenation Of All Words
    Sublime text3修改tab键为缩进为四个空格,
    sublime text3 python打开图像的问题
    安装上imesupport输入法依然不跟随的解决办法,
    sublime text3 的插件冲突弃用问题,
    sublime text3 BracketHighlighter括号匹配的设置
    windows 下wget的使用
  • 原文地址:https://www.cnblogs.com/bokeofzp/p/6063829.html
Copyright © 2011-2022 走看看