Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android學習指南之三十三:自定義Android UI組件的方法

Android學習指南之三十三:自定義Android UI組件的方法

編輯:關於android開發

       我們為什麼需要自定義Android UI組件呢?這是由於有很多Activity使用的View頂部的控件是差不多的,就像HTML頁面裡面我們有自己的header這樣的東西,那我們可能應該將其統一到一塊,但是view頂部又不是簡單的統一的格式,裡面有一些控件的樣式或者文字還是有不同的,所以這裡就需要有一個定制化的UI,然後我們可以設置這個UI的某一些自定義屬性來滿足不同的需求。

       這次我們自定義的這個組件是一個RelativeLayout裡面包含了三個View,左邊一個返回Button,右邊可能有一個操作Button也可能沒有,然後中間有一個TextView。

       下面來說一下自定義的步驟:

       1、在Layout裡面創建一個view的xml文件,然後使用Merge標簽來包含子元素,這裡是兩個Button元素以及一個Text元素。

       2、新建一個java類繼承一個View類,我們這裡是一個RelativeLayout,然後實現這個類的初始化方法,裡面主要功能是根據傳入的參數來設置裡面的子元素。

Java代碼
  1. public class TopBarWidget extends RelativeLayout{   
  2.   
  3.     public TopBarWidget(Context context, AttributeSet attrs) {   
  4.         super(context, attrs);   
  5.         setGravity(Gravity.CENTER);   
  6.   
  7.         LayoutInflater.from(context).inflate(R.layout.top_bar_widget, this, true);   
  8.   
  9.         TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.TopBarWidget, 0, 0);   
  10.   
  11.         String text = array.getString(R.styleable.TopBarWidget_title);   
  12.         if (text != null){   
  13.             ((TextView) findViewById(R.id.top_bar_title)).setText(text);   
  14.         }   
  15.   
  16.         Drawable dw=array.getDrawable(R.styleable.TopBarWidget_actionBtnImg);   
  17.         if(dw!=null){   
  18.             ((ImageButton) findViewById(R.id.top_bar_action)).setBackgroundDrawable(dw);   
  19.         }   
  20.     }   
  21.   
  22. }  

       3、在使用這個自定義方法的地方用這個類的全路徑來作為標簽名字,然後可以傳入這個類的父類能夠使用的屬性,然後也可以使用自定義的屬性,使用自定義屬性的時候需要加上自己的名字空間,自己的名字空間需要在根目錄裡面定義,值的格式是:"http://schemas.android.com/apk/res/"。

XML/HTML代碼
  1. <com.tencent.qqcalendar.view.TopBarWidget  
  2.     android:layout_width="fill_parent"  
  3.     android:layout_height="68dip"  
  4.     android:background="#333333"  
  5.     TopBarWidget:title="@string/edit_event_title"  
  6.     TopBarWidget:actionBtnImg="@drawable/create_ok"  
  7. />  

       4.在attrs裡面聲明自定義的屬性,比如上面的title以及actionBtnImg。

XML/HTML代碼
  1. <declare-styleable name="TopBarWidget">  
  2.     <attr name="actionBtnImg" format="integer"/>  
  3.     <attr name="title" format="string"/>  
  4. </declare-styleable>  

       這樣你就可以使用你的自定義UI控件了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved