Android自定義控件之組合控件學習筆記分享
我們來講一下自定義組合控件,相信大家也接觸過自定義組合控件吧,話不多說,直接干(哈~哈~):

大家看到這個覺得這不是很簡單的嗎,這不就是寫個布局文件就搞定嘛,沒錯,確實直接上布局就行,不過,我只是用這個簡單的例子來講一下自定義組合控件的用法。
首先看看,這一行行的條目看起來都長得差不多,只是圖片和文字不一樣,沒錯,就是看中這一點,我們可以把一個條目做成一個組合控件,做為一個整體,這樣不管你有幾個條目,就寫幾個組合控件就行了。
步驟:
1.先建立組合控件的布局
myView.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="60dp" > <ImageView android:id="@+id/icon_Iv" android:layout_width="35dp" android:layout_height="35dp" android:layout_centerVertical="true" android:layout_marginLeft="30dp" android:src="@drawable/phone_qiyi_explore_friends" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="80dp" android:gravity="center" android:text="朋友圈" android:textSize="15sp" android:textStyle="bold" /> <ImageView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_marginRight="20dp" android:src="@drawable/phone_my_inc_arrow" /> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:layout_alignParentBottom="true" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:background="#000" /> </RelativeLayout>

2.自定義屬性(圖片資源和文本)
在values/目錄下新建attrs.xml文件
attrs.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- 自定義屬性:src和text --> <declare-styleable name="myView_attrs"> <attr name="src" format="reference"></attr> <attr name="text" format="string"></attr> </declare-styleable> </resources>

3.新建一個類MyView繼承RelativeLayout,將自定義的布局文件加載進來并且獲取自定義的屬性,然后取得自定義屬性字段的值,最后將相應的值設置在相應的組件上
/**
* 自定義組合控件(包括一個ImageView和TextView)
* @author Administrator
*
*/
public class MyView extends RelativeLayout{
private TextView tv;
private ImageView icon_Iv;
public MyView(Context context) {
this(context,null);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
//拿到自定義的屬性
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.myView_attrs);
//獲取自定義屬性的值
String text = ta.getString(R.styleable.myView_attrs_text);
Drawable drawable = ta.getDrawable(R.styleable.myView_attrs_src);
//把值設置到相應組件上
icon_Iv.setImageDrawable(drawable);
tv.setText(text);
}
private void initView(Context context) {
//把自定義的布局加載進來
View.inflate(context,R.layout.myview,this);
//找到布局中的組件
icon_Iv = (ImageView) this.findViewById(R.id.icon_Iv);
tv = (TextView) this.findViewById(R.id.tv);
}
}
4.在main.xml文件中添加自定義組合控件
注:記得加上命名空間
有幾個條目就加幾個控件
main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android xmlns:briup="http://schemas.android.com/apk/res/com.example.test" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.test.MainActivity" > <com.example.test.MyView android:id="@+id/myView" briup:src="@drawable/phone_qiyi_explore_friends" briup:text="朋友圈" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <com.example.test.MyView android:id="@+id/myView1" briup:src="@drawable/phone_qiyi_gusslike_icon" briup:text="啪啪奇" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <com.example.test.MyView android:id="@+id/myView2" briup:text="消息" briup:src="@drawable/phone_qiyi_message_icon" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>

注:

做到以上步驟就可以了,希望本文所述對大家學習Android自定義控件有所幫助。
相關文章
Android開發(fā)使用json實現(xiàn)服務器與客戶端數(shù)據(jù)的交互功能示例
這篇文章主要介紹了Android開發(fā)使用json實現(xiàn)服務器與客戶端數(shù)據(jù)的交互功能,結合具體實例形式分析了Android使用json格式數(shù)據(jù)在服務器與客戶端傳遞實現(xiàn)數(shù)據(jù)庫查詢功能的步驟與相關操作技巧,需要的朋友可以參考下2017-10-10
Android實現(xiàn)長按圓環(huán)動畫View效果的思路代碼
這篇文章主要介紹了Android實現(xiàn)長按圓環(huán)動畫View效果,本文給大家分享實現(xiàn)思路,通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Android ConstraintLayout約束布局使用實例介紹
ConstraintLayout是Google在Google I/O 2016大會上發(fā)布的一種新的布局容器(ViewGroup),它支持以靈活的方式來放置子控件和調整子控件的大小,下面這篇文章主要給大家介紹了關于Android中ConstraintLayout約束布局詳細解析的相關資料,需要的朋友可以參考下2022-10-10
Android 網(wǎng)絡請求框架解析之okhttp與okio
HTTP是現(xiàn)代應用常用的一種交換數(shù)據(jù)和媒體的網(wǎng)絡方式,高效地使用HTTP能讓資源加載更快,節(jié)省帶寬,OkHttp是一個高效的HTTP客戶端,下面這篇文章主要給大家介紹了關于OkHttp如何用于安卓網(wǎng)絡請求,需要的朋友可以參考下2021-10-10
Android App中使用Pull解析XML格式數(shù)據(jù)的使用示例
這篇文章主要介紹了Android App中使用Pull解析XML格式數(shù)據(jù)的使用示例,Pull是Android中自帶的XML解析器,Java里也是一樣用:D需要的朋友可以參考下2016-04-04
Android 通過jni返回Mat數(shù)據(jù)類型方法
今天小編就為大家分享一篇Android 通過jni返回Mat數(shù)據(jù)類型方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

