標籤:
GirdView為九宮格式布局,加入圖片即文字做出菜單
activiyy_main.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" android:background="#000000"> <GridView android:id="@+id/gridView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numColumns="3" android:horizontalSpacing="10dp" android:verticalSpacing="10dp" ></GridView></LinearLayout>
android:numColumns 設定一排的列數(參數auto_fit表示自適應)
android:horizontalSpacing="" 設定水平間距
android:verticalSpacing="" 設定垂直間距
九宮格的單個元素
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" android:gravity="center" android:background="#000000" > <ImageView android:id="@+id/image" android:layout_width="60dp" android:layout_height="60dp" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:text="文字" android:textColor="#ffffff" /></LinearLayout>
每個元素有ImageView控制項和TextView組成,
android:layout_marginTop="" 設定TextView頂部與ImageView的間距
設定顏色,背景為黑色。
MainActivity.java
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.Window;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.GridView;import android.widget.SimpleAdapter;import android.widget.Toast;public class MainActivity extends ActionBarActivity implements OnItemClickListener{ private GridView gridView; private List<Map<String, Object>> datalist; private int[] icon = { R.drawable.address_book, R.drawable.calendar, R.drawable.camera, R.drawable.clock, R.drawable.games_control, R.drawable.messenger, R.drawable.ringtone, R.drawable.settings, R.drawable.speech_balloon, R.drawable.weather, R.drawable.world, R.drawable.youtube }; private String[] icon_name = { "通訊錄", "日曆", "照相機", "時鐘", "遊戲", "簡訊", "鈴聲", "設定", "語言", "天氣", "瀏覽器", "視頻" }; private SimpleAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); gridView = (GridView) findViewById(R.id.gridView); datalist = new ArrayList<Map<String,Object>>(); adapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"image", "text"}, new int[]{R.id.image, R.id.text}); //添加適配器和監聽器 gridView.setAdapter(adapter); gridView.setOnItemClickListener(this); } private List<Map<String, Object>> getData() { for(int i = 0; i<icon.length; i++){ Map<String, Object> map = new HashMap<String, Object>(); map.put("image", icon[i]); map.put("text", icon_name[i]); datalist.add(map); } return datalist; } //監聽單擊事件 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //顯示訊息,指定訊息顯示的時間長度 Toast.makeText(this, "我是"+icon_name[position], Toast.LENGTH_SHORT).show(); } }
圖片資源放入對應drawable檔案夾下
GridView對應的適配器使用SimpleAdapter,資料用ArrayList<Map<String,Object>>();
getData()函數對datalist賦值,數組icon和icon_name存放圖片資源和字串資源。
Android控制項GridView實現菜單介面