Android开发从入门到放弃(10)适配GridView
2016-12-31 11:36
281 查看
本篇博客来讨论如何显示一个GridView。在前两篇博客中我们使用了ListView,显示一个ListView时都使用了Adapter,Adapter的作用就是将数据源适配到列表控件中。显示GridView也需要一个ListAdapter。
首先来看activity_main.xml的代码
上面的layout定义了一个GridView,并设置了
跟GridView相关的属性我会在最下面列出来并稍作介绍。接着来看代码,下面是MainActivity.java的代码
看到了吧,还是这个套路,定义一个数组或列表(上面是
接下来还通过
下面来介绍一下跟GridView相关的几个属性
android:numColumns:指定GridView显示几列。可以设置为一个具体的数字,也可以设置为
android:columnWidth:指定每一列的宽度
android:verticalSpacing:指定行之间的间距
android:horizontalSpacing:指定列之间的间距
android:stretchMode:如果将android:columnWidth设置为auto_fit,并且分配完列以后在水平方向还有多余的空间的话,可以使用这个属性来决定如何分配剩下的空间。有两个选项可供设置,设置为columnWidth的话,就将剩余的空间分配给每一列,设置为spacingWidth的话,就将剩下的空间分配给列之间的间距。
首先来看activity_main.xml的代码
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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.zdk.gridview.MainActivity"> <GridView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/gridview1" android:columnWidth="100dip" android:numColumns="auto_fit"></GridView> </RelativeLayout>
上面的layout定义了一个GridView,并设置了
columnWidth为一个固定的值,
android:numColumns="auto_fit"意味着由Android系统来决定这个GridView要显示多少列。
跟GridView相关的属性我会在最下面列出来并稍作介绍。接着来看代码,下面是MainActivity.java的代码
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Adapter; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.GridView; import android.widget.ListAdapter; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private static final String[] myListItems={"To", "be", "or", "not", "to", "be","that", "is", "the", "question"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GridView gridView = (GridView) findViewById(R.id.gridview1); ListAdapter adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,myListItems); gridView.setAdapter(adapter); gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(MainActivity.this, myListItems[i], Toast.LENGTH_SHORT).show(); } }); } }
看到了吧,还是这个套路,定义一个数组或列表(上面是
myListItems数组),指定一个用来显示每一项的layout(上面是
android.R.layout.simple_list_item_1),最后实例化一个ListAdapter对象并设置为GridView的Adapter,就可以将一个数组显示通过GridView显示出来。
接下来还通过
setOnItemClickListener方法将一个匿名内部类的实例赋值给了gridView,匿名内部类中的
onItemClick方法会在每一个元素被点击时调用。
下面来介绍一下跟GridView相关的几个属性
android:numColumns:指定GridView显示几列。可以设置为一个具体的数字,也可以设置为
auto_fit,它的意思是让Android系统来根据列的宽度、列之间的间隔、屏幕大小等因素来决定需要显示为几列。
android:columnWidth:指定每一列的宽度
android:verticalSpacing:指定行之间的间距
android:horizontalSpacing:指定列之间的间距
android:stretchMode:如果将android:columnWidth设置为auto_fit,并且分配完列以后在水平方向还有多余的空间的话,可以使用这个属性来决定如何分配剩下的空间。有两个选项可供设置,设置为columnWidth的话,就将剩余的空间分配给每一列,设置为spacingWidth的话,就将剩下的空间分配给列之间的间距。
相关文章推荐
- Android开发从入门到放弃(11)适配Spinner和AutoComplete
- Android开发入门之GridView(九宫图)用法
- Android开发从入门到放弃(7)使用GridLayout
- Android开发从入门到放弃(1)在Activity之间传递数据
- Android开发从入门到放弃(3)使用SharedPreferences保存数据
- [Android-ARCore开发]ARCore从入门到放弃2-Demo介绍和扩展
- Android开发从入门到放弃(2)保存Activity的状态
- Android入门笔记 - 界面开发 - GridView, BaseAdapter
- Android开发从入门到放弃(4)使用RelativiLayout
- 2015年最新Android基础入门教程目录第一章:环境搭建与开发相关(已完结 10/10)
- [Android-ARCore开发]ARCore从入门到放弃1-Demo上手
- Android开发从入门到放弃(9)使用ListView显示一个类的数组
- Android新手入门2016(10)--GridView
- Android开发从入门到放弃(8)使用ListView显示一个简单的列表
- android开发入门----HelloGridView编译出错问题解决
- [Android-ARCore开发]ARCore从入门到放弃1-Demo上手
- Android开发入门(五)之界面Activity之间的跳转
- Android 开发入门 0 在Windows上搭建Android开发环境
- Google手机操作系统Android应用开发入门
- Android开发入门(-)之开发平台搭建