Android 中的 Grid View函数

首页 / Android入门教程 / Android 中的 Grid View函数

Android GridView在二维滚动网格(行和列)中显示项目,并且网格项目不一定是预定的,但它们会使用ListAdapter自动插入到布局中

Grid View

Grid View - Grid view

ListView 和 GridView 是 AdapterView 的子类,可以通过将它们绑定到 Adapter 来填充,该适配器来自外部源的数据,并创建一个表示每个数据条目的视图。

Grid View - 属性

以下是特定于GridView的重要属性-

Sr.NoAttribute & 描述
1

android:id

这是唯一标识布局的ID。

2

android:columnWidth

这指定每列的固定宽度。可以是px,dp,sp,in或mm。

3

android:gravity

指定每个像元内的位置。可能的值是top,bottom,left,right,center,center_vertical,center_horizo​​ntal等。

4

android:horizo​​ntalSpacing

定义列之间的默认水平间距。可以是px,dp,sp,in或mm。

5

android:numColumns

定义要显示的列数。可以是整数值,如" 100"或auto_fit,这表示要显示尽可能多的列以填充可用空间。

6

android:stretchMode

定义列应如何伸展以填充可用的空白空间(如果有)。这必须是以下两个值之一:

  • none - 禁用拉伸。

  • spacingWidth - 延长每列之间的间隔。

  • columnWidth - 每列均等地拉伸。

  • spacingWidthUniform - 每列之间的间距被均匀拉伸。.

7

android:verticalSpacing

定义行之间的默认垂直间距。可以是px,dp,sp,in或mm。

Grid View - 示例

本示例将带您完成简单的步骤,以展示如何使用GridView创建自己的Android应用程序。

链接:https://www.learnfk.comhttps://www.learnfk.com/android/android-grid-view.html

来源:LearnFk无涯教程网

以下是修改后的主要Activity文件 src/com.example.helloworld/MainActivity.java 的内容。该文件可以包括每个基本生命周期方法。

package com.example.helloworld;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.GridView;

public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      GridView gridview = (GridView) findViewById(R.id.gridview);
      gridview.setAdapter(new ImageAdapter(this));
   }
}

以下是 res/layout/activity_main.xml 文件的内容-

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/gridview"
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent"
   android:columnWidth="90dp"
   android:numColumns="auto_fit"
   android:verticalSpacing="10dp"
   android:horizontalSpacing="10dp"
   android:stretchMode="columnWidth"
   android:gravity="center"
/>

以下是 res/values/strings.xml 的内容,以定义两个新的常量-

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">HelloWorld</string>
   <string name="action_settings">Settings</string>
</resources>

以下是 src/com.example.helloworld/ImageAdapter.java 文件的内容-

package com.example.helloworld;

import android.content.Context;

import android.view.View;
import android.view.ViewGroup;

import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
   private Context mContext;
   
   //Constructor
   public ImageAdapter(Context c) {
      mContext = c;
   }
   
   public int getCount() {
      return mThumbIds.length;
   }

   publicgetItem(int position) {
      return null;
   }

   public long getItemId(int position) {
      return 0;
   }
   
   //为 Adapter 引用的每个项目创建一个新的 ImageView
   public View getView(int position, View convertView, ViewGroup parent) {
      ImageView imageView;
      
      if (convertView == null) {
         imageView = new ImageView(mContext);
         imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
         imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
         imageView.setPadding(8, 8, 8, 8);
      } 
      else 
      {
         imageView = (ImageView) convertView;
      }
      imageView.setImageResource(mThumbIds[position]);
      return imageView;
   }
   
   //Keep all Images in array
   public Integer[] mThumbIds = {
      R.drawable.sample_2, R.drawable.sample_3,
      R.drawable.sample_4, R.drawable.sample_5,
      R.drawable.sample_6, R.drawable.sample_7,
      R.drawable.sample_0, R.drawable.sample_1,
      R.drawable.sample_2, R.drawable.sample_3,
      R.drawable.sample_4, R.drawable.sample_5,
      R.drawable.sample_6, R.drawable.sample_7,
      R.drawable.sample_0, R.drawable.sample_1,
      R.drawable.sample_2, R.drawable.sample_3,
      R.drawable.sample_4, R.drawable.sample_5,
      R.drawable.sample_6, R.drawable.sample_7
   };
}

运行 Eclipse Run Icon工具栏。 Android studio将应用程序安装在您的AVD上并启动它,如果设置和应用程序一切正常,它将在"Emulator"窗口中显示-

Android gridView Layout

Sub-Activity 示例

以下是修改后的主要Activity文件 src/com.example.helloworld/MainActivity.java 的内容,该文件可以包括每个基本生命周期方法。

package com.example.helloworld;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import android.view.Menu;
import android.view.View;

import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;

public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      GridView gridview = (GridView) findViewById(R.id.gridview);
      gridview.setAdapter(new ImageAdapter(this));
      
      gridview.setOnItemClickListener(new OnItemClickListener() {
         public void onItemClick(AdapterView<?> parent, 
            View v, int position, long id){
            //Send intent to SingleViewActivity 
            Intent i = new Intent(getApplicationContext(), SingleViewActivity.class);
            //Pass image index
            i.putExtra("id", position);
            startActivity(i);
         }
      });
   }
}

以下是新Activity文件 src/com.example.helloworld/SingleViewActivity.java 文件的内容-

package com.example.helloworld;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;

public class SingleViewActivity extends Activity {
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.single_view);
      
      //Get intent data
      Intent i = getIntent();
      
      //Selected image id
      int position = i.getExtras().getInt("id");
      ImageAdapter imageAdapter = new ImageAdapter(this);
      
      ImageView imageView = (ImageView) findViewById(R.id.SingleView);
      imageView.setImageResource(imageAdapter.mThumbIds[position]);
   }
}

以下是 res/layout/single_view.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/SingleView"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"/>
 
</LinearLayout>

以下是 AndroidManifest.xml 的内容,以定义两个新的常量-

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.helloworld">
      
   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.helloworld.MainActivity"
         android:label="@string/app_name" >
      
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
   
      <activity android:name=".SingleViewActivity"></activity>
   
   </application>
</manifest>

然后单击"运行 Eclipse运行图标工具栏。 Android studio将应用程序安装在您的AVD上并启动它,如果设置和应用程序一切正常,它将在"Emulator"窗口中显示-

Android gridView Layout

现在,如果您单击其中任一图像,它将显示为单个图像,如-

Android Single GridView Layout

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品手记 -〔邱岳〕

Netty源码剖析与实战 -〔傅健〕

技术管理案例课 -〔许健〕

Spark核心原理与实战 -〔王磊〕

操作系统实战45讲 -〔彭东〕

编程高手必学的内存知识 -〔海纳〕

李智慧 · 高并发架构实战课 -〔李智慧〕

人人都用得上的数字化思维课 -〔付晓岩〕

高并发系统实战课 -〔徐长龙〕

好记忆不如烂笔头。留下您的足迹吧 :)