Android GridView在二维滚动网格(行和列)中显示项目,并且网格项目不一定是预定的,但它们会使用ListAdapter自动插入到布局中
Grid View - Grid view
ListView 和 GridView 是 AdapterView 的子类,可以通过将它们绑定到 Adapter 来填充,该适配器来自外部源的数据,并创建一个表示每个数据条目的视图。
Grid View - 属性
以下是特定于GridView的重要属性-
Sr.No | Attribute & 描述 |
---|---|
1 | android:id 这是唯一标识布局的ID。 |
2 | android:columnWidth 这指定每列的固定宽度。可以是px,dp,sp,in或mm。 |
3 | android:gravity 指定每个像元内的位置。可能的值是top,bottom,left,right,center,center_vertical,center_horizontal等。 |
4 | android:horizontalSpacing 定义列之间的默认水平间距。可以是px,dp,sp,in或mm。 |
5 | android:numColumns 定义要显示的列数。可以是整数值,如" 100"或auto_fit,这表示要显示尽可能多的列以填充可用空间。 |
6 | android:stretchMode 定义列应如何伸展以填充可用的空白空间(如果有)。这必须是以下两个值之一:
|
7 | android:verticalSpacing 定义行之间的默认垂直间距。可以是px,dp,sp,in或mm。 |
Grid View - 示例
本示例将带您完成简单的步骤,以展示如何使用GridView创建自己的Android应用程序。
以下是修改后的主要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 {@Overrideprotected 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;//Constructorpublic ImageAdapter(Context c) {mContext = c;}public int getCount() {return mThumbIds.length;}publicgetItem(int position) {return null;}public long getItemId(int position) {return 0;}//为 Adapter 引用的每个项目创建一个新的 ImageViewpublic 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 arraypublic 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}; }
运行工具栏。 Android studio将应用程序安装在您的AVD上并启动它,如果设置和应用程序一切正常,它将在"Emulator"窗口中显示-
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 {@Overrideprotected 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 indexi.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 {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.single_view);//Get intent dataIntent i = getIntent();//Selected image idint 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"><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid: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>
然后单击"运行工具栏。 Android studio将应用程序安装在您的AVD上并启动它,如果设置和应用程序一切正常,它将在"Emulator"窗口中显示-
现在,如果您单击其中任一图像,它将显示为单个图像,如-
Android 中的 Grid View函数 - 无涯教程网无涯教程网提供Android GridView在二维滚动网格(行和列)中显示项目,并且网格项目不一定是预定的,但...https://www.learnfk.com/android/android-grid-view.html