Android自定义控件之组合控件学习笔记分享
程序员文章站
2024-03-02 21:02:58
我们来讲一下自定义组合控件,相信大家也接触过自定义组合控件吧,话不多说,直接干(哈~哈~):
大家看到这个觉得这不是很简单的吗,这不就是写个布局文件就搞定嘛,没错,确...
我们来讲一下自定义组合控件,相信大家也接触过自定义组合控件吧,话不多说,直接干(哈~哈~):
大家看到这个觉得这不是很简单的吗,这不就是写个布局文件就搞定嘛,没错,确实直接上布局就行,不过,我只是用这个简单的例子来讲一下自定义组合控件的用法。
首先看看,这一行行的条目看起来都长得差不多,只是图片和文字不一样,没错,就是看中这一点,我们可以把一个条目做成一个组合控件,做为一个整体,这样不管你有几个条目,就写几个组合控件就行了。
步骤:
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自定义控件有所帮助。