Android之GridView简单说明
16lz
2021-01-23
GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。主要用于设置Adapter。
GridView常用的XML属性:
属性名称 | 描述 |
android:columnWidth | 设置列的宽度。 |
android:gravity | 设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多选,用“|”分开。 |
android:horizontalSpacing | 两列之间的间距。 |
android:numColumns | 设置列数。 |
android:stretchMode | 缩放模式。 |
android:verticalSpacing | 两行之间的间距。 |
下面用一个例子来说明吧;
新建一个空项目,修改main_activity.xml如下:
<RelativeLayoutxmlns: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:paddingTop="@dimen/activity_vertical_margin"android:paddingBottom="@dimen/activity_vertical_margin"tools:context=".MainActivity"android:background="#000000"><GridViewandroid:id="@+id/gridView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:numColumns="4"android:stretchMode="columnWidth"android:gravity="center"></GridView></RelativeLayout>
新增一个item_layout.xml文件,代码入下:
<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:orientation="vertical"><ImageViewandroid:id="@+id/img"android:layout_width="wrap_content"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="天气"android:textColor="#ffffff"/></LinearLayout>
修改mainActivity.java的代码入下:
packageyaowen.com.helloworld;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.GridView;importandroid.widget.SimpleAdapter;importandroid.widget.Toast;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Objects;publicclassMainActivityextendsAppCompatActivity{privateGridViewgridView;privateList<Map<String,Object>>data_list;privateSimpleAdaptersim_adapter;//图片封装为一个组,这个素材文件自己找了呀~!privateint[]icon={R.drawable.camera,R.drawable.calendar,R.drawable.chrome,R.drawable.email,R.drawable.maps,R.drawable.music,R.drawable.notes,R.drawable.recorder,R.drawable.phone,R.drawable.playstore,R.drawable.gallery,R.drawable.twitter};//R.drawable.calculator};privateString[]iconName={"照相机","日历","浏览器","邮箱","地图","音乐","便签","录音","电话","应用商店","图库","迅雷"};//,"计算器"};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gridView=(GridView)findViewById(R.id.gridView);//新建Listdata_list=newArrayList<Map<String,Object>>();//获取数据getData();//新建数据String[]from={"image","text"};int[]to={R.id.img,R.id.tv};sim_adapter=newSimpleAdapter(this,data_list,R.layout.grid_item,from,to);//配置适配器gridView.setAdapter(sim_adapter);//当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件gridView.setOnItemClickListener(newAdapterView.OnItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2,longarg3){//在本例中arg2=arg3HashMap<String,Object>item=(HashMap<String,Object>)arg0.getItemAtPosition(arg2);//显示所选Item的ItemTextStringtextTest=(String)item.get("text");setTitle(textTest);Toast.makeText(getApplicationContext(),"你点击的是:"+textTest,Toast.LENGTH_SHORT).show();}});}privateList<Map<String,Object>>getData(){//icon和iconName的长度是相同的,这里任选其一都可以for(inti=0;i<icon.length;i++){Map<String,Object>map=newHashMap<String,Object>();map.put("image",icon[i]);map.put("text",iconName[i]);data_list.add(map);}returndata_list;}}
代码就是这么简单,相信你用了会这么觉得了!
最后的效果图如下:
更多相关文章
- Android消息处理机制:源码剖析Handler、Looper,并实现图片异步加载
- Android常用图片加载库介绍及对比
- Android Studio NDK开发在C代码中将Log输出到logcat上面
- 22个值得收藏的android开源代码-UI篇
- [Android]混淆代码后生成带签名的apk
- 把android sdk 1.5源代码加入SDK
- Android代码内存优化建议-Android资源篇
- 在Ubuntu16.04上下载并编译Android内核源代码