安卓開發_九宮格布局

來源:互聯網
上載者:User

標籤:

學習內容來自

android布局基礎及範例:人人android九宮格布局

類似的九宮格 上面是圖片,下面是文字

這裡用的是“GridView”表格版面配置,下面我來給大家講一下:

首先,請大家理解一下“迭代顯示”這個概念,這個好比布局嵌套,我們在一個大布局裡面重複的放入一些布局相同的小布局,

那些重複的部分是由圖片和文字組成的小控制項,圖片在上方,文字在下方,之後我們只需要把這些小控制項迭代進入主容器裡即可。

首先看看主容器的布局

 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     android:layout_width="match_parent" 4     android:layout_height="match_parent" 5     android:orientation="vertical" > 6  7     <GridView  8       android:id="@+id/GridView" 9       android:layout_width="fill_parent"10       android:layout_height="fill_parent"11       android:numColumns="auto_fit"12       android:columnWidth="70dp"13       android:stretchMode="columnWidth"14       android:gravity="center">15 </GridView>16 </LinearLayout>

介紹一下裡面的某些屬性:

android:numColumns=”auto_fit” ,GridView的列數設定為自動
android:columnWidth=”90dp”,每列的寬度,也就是Item的寬度
android:stretchMode=”columnWidth”,縮放與列寬大小同步

在這裡需要關注的屬性是columnWidth,這裡指定了列的寬度,一個列對象,對應一個 “可重複的子項”,這個子項就是我們 的圖片項和圖片下方文字顯示的部分。如果不指定這個寬度的話,預設是每行(展示的行,介面)僅僅只顯示一個 “可重複的子項”,而當指定了寬度時,本文指定為90dp,如果每行實際行尺寸大於90,他就會繼續將下一個的“可重複的子項”,放置在本行。於是就呈現一種 一行顯示多個子項的情況。numColumns屬性,指定一個自動填滿的值,指示了自動填滿行。

然後是一個布局,放重複顯示的小布局

 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="fill_parent" 4 android:layout_height="wrap_content" 5 > 6 <ImageView 7     android:layout_width="wrap_content" 8     android:id="@+id/ItemImage" 9     android:layout_height="wrap_content"10     android:layout_centerHorizontal="true"/>11 <TextView12     android:layout_width="wrap_content"13     android:layout_height="wrap_content"14     android:layout_below="@+id/ItemImage"15     android:id="@+id/ItemText"16     android:layout_centerHorizontal="true"17 />18 </RelativeLayout>

這裡使用了一個相對布局,在TextView 裡使用屬性android:layout_below=”@+id/ItemImage”指示了文本在圖片的下方。

 

構建ArrayList作為資料來源,再構建SimpleAdapter 作為資料配接器,為gridView指定配接器物件。

採用了java中的資料結構:HashMap

 1 package jiabin.activity; 2    3 import java.util.ArrayList; 4 import java.util.HashMap; 5    6 import android.app.Activity; 7 import android.os.Bundle; 8 import android.view.View; 9 import android.widget.AdapterView;10 import android.widget.AdapterView.OnItemClickListener;11 import android.widget.GridView;12 import android.widget.SimpleAdapter;13 import android.widget.Toast;14   15 public class layout_gridview extends Activity {16     /** Called when the activity is first created. */17     @Override18     public void onCreate(Bundle savedInstanceState) {19         super.onCreate(savedInstanceState);20         setContentView(R.layout.main);21         GridView gridview = (GridView) findViewById(R.id.GridView);22         ArrayList<HashMap<String, Object>> meumList = new ArrayList<HashMap<String, Object>>();23         for(int i = 1;i < 10;i++)24         {25             HashMap<String, Object> map = new HashMap<String, Object>();26             map.put("ItemImage", R.drawable.i1);27             map.put("ItemText", ""+i);28             meumList.add(map);29         }30         SimpleAdapter saItem = new SimpleAdapter(this,31                   meumList, //資料來源32                   R.layout.item, //xml實現33                   new String[]{"ItemImage","ItemText"}, //對應map的Key34                   new int[]{R.id.ItemImage,R.id.ItemText});  //對應R的Id35   36                 //添加Item到網格中37                 gridview.setAdapter(saItem);38                 //添加點擊事件39                 gridview.setOnItemClickListener(40                     new OnItemClickListener()41                     {42                         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)43                         {44                             int index=arg2+1;//id是從0開始的,所以需要+145                             Toast.makeText(getApplicationContext(), "你按下了選項:"+index, 0).show();46                             //Toast用於向使用者顯示一些協助/提示47                         }48                     }49                 );50     }51 }

上面是全部顯示相同的圖片

如果想要顯示不同的圖片和文字 

則可以把圖片,文字放到數組裡

 1  int[] itemimage = new int[]{R.drawable.image_people_shu_zhangfei,R.drawable.image_people_shu_zhugeliang,R.drawable.image_people_shu_liubei,R.drawable.image_people_shu_huatuo,R.drawable.image_people_shu_guanyu}; //放圖片 7 String[] itemname = new String[]{"張飛","諸葛亮","劉備","華佗","關羽"}; //放文字

for(int i=0;i<6;i++)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("ItemImage", itemimage[i]);
map.put("ItemText", ""+itemname[i]);
meumList.add(map);
}

便可以實現不同圖片和文字了

安卓開發_九宮格布局

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.