GridView控件---应用图标的显示

来源:互联网 发布:人工智能原理 编辑:程序博客网 时间:2024/06/17 11:01

GirdView的一些属性:

常用属性:

android:numColumns--------列数设置为自动

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

布局实例

应用效果


项目步骤:

 修改activity_main.xml文件,如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/LinearLayout1"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    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=".MainActivity" >    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:text="@string/hello_world" />    <GridView         android:id="@+id/Gv"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:numColumns="3"/></LinearLayout>

在layout中添加activity_filelist_item.xml文件,定义样式:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <ImageView        android:id="@+id/Iv"        android:layout_width="80dp"        android:layout_height="60dp" />    <TextView         android:id="@+id/TV"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:text="应用名"/></LinearLayout>

在包名目录下新建实体类MyFile.java,方便设置数据,代码:

package com.bzu.test034gridview;public class MyFile {public String FileName;//文件名public int ImgId;//文件的类型缩略图//带参数的构造方法public MyFile() {super();}//不带参数的构造方法public MyFile(String fileName, int imgId) {super();FileName = fileName;ImgId = imgId;}}


在相同目录下添加一个FileListAdapter.java适配器,自定义adapter,代码:

package com.bzu.test034gridview;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;//自定义adapterpublic class FileLiastAdapter extends BaseAdapter {//定义Contextprivate Context mContext;//定义要显示的MyFile列表private List<MyFile> fileList;//有参的构造方法public FileLiastAdapter(Context c, List<MyFile> f1) {super();mContext = c;fileList = f1;}//获取显示的条目数量@Overridepublic int getCount() {return fileList.size();}//获取列表中的单个对象@Overridepublic Object getItem(int position) {return fileList.get(position);}//获取列表中对象的Id@Overridepublic long getItemId(int position) {return position;}//构造每一个Item的View视图@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//定义位置占位符类的对象ViewHolder viewholder=new ViewHolder();if(convertView==null){//初始化当前view的布局视图convertView=LayoutInflater.from(mContext).inflate(R.layout.activity_filelist_item, null);}//获取到对应的控件对象viewholder.fileImage=(ImageView) convertView.findViewById(R.id.Iv);viewholder.fileName=(TextView) convertView.findViewById(R.id.TV);//给空间对象设置相应的内容viewholder.fileImage.setBackgroundResource(fileList.get(position).ImgId);viewholder.fileName.setText(fileList.get(position).FileName);return convertView;}//定义内部类作为占位符组合class ViewHolder{ImageView fileImage;TextView fileName;}}

修改MainActivity.java文件,如下代码:

package com.bzu.test034gridview;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.GridView;public class MainActivity extends Activity {private GridView Gv;FileLiastAdapter adapter;private List<MyFile> fileList=new ArrayList<MyFile>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findById();setData();setGv();}private void setGv() {//将可选内容与ArrayAdapter链接起来adapter=new FileLiastAdapter(this, fileList);//设置Gv的adapterGv.setAdapter(adapter);}private void setData() {//构造模拟数据fileList.add(new MyFile("test.txt", R.drawable.app_bg1));fileList.add(new MyFile("test.jpg", R.drawable.app_bg2));fileList.add(new MyFile("test.avi", R.drawable.app_bg3));fileList.add(new MyFile("dirl", R.drawable.app_bg4));fileList.add(new MyFile("test.doc", R.drawable.app_bg5));fileList.add(new MyFile("test.rmvb", R.drawable.app_bg1));fileList.add(new MyFile("test.mp4", R.drawable.app_bg6));fileList.add(new MyFile("test.rm", R.drawable.app_bg7));fileList.add(new MyFile("test.png", R.drawable.app_bg4));fileList.add(new MyFile("dir2", R.drawable.app_bg3));fileList.add(new MyFile("test.txt", R.drawable.app_bg1));fileList.add(new MyFile("test.jpg", R.drawable.app_bg2));fileList.add(new MyFile("test.avi", R.drawable.app_bg3));fileList.add(new MyFile("dirl", R.drawable.app_bg4));fileList.add(new MyFile("test.doc", R.drawable.app_bg5));fileList.add(new MyFile("test.rmvb", R.drawable.app_bg1));fileList.add(new MyFile("test.mp4", R.drawable.app_bg6));fileList.add(new MyFile("test.rm", R.drawable.app_bg7));fileList.add(new MyFile("test.png", R.drawable.app_bg4));fileList.add(new MyFile("dir2", R.drawable.app_bg3));}private void findById() {Gv=(GridView) findViewById(R.id.Gv);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}




0 0
原创粉丝点击