欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android自定义控件之组合控件学习笔记分享

程序员文章站 2024-03-01 13:17:16
我们来讲一下自定义组合控件,相信大家也接触过自定义组合控件吧,话不多说,直接干(哈~哈~): 大家看到这个觉得这不是很简单的吗,这不就是写个布局文件就搞定嘛,没错,确...

我们来讲一下自定义组合控件,相信大家也接触过自定义组合控件吧,话不多说,直接干(哈~哈~):

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>

Android自定义控件之组合控件学习笔记分享

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>

Android自定义控件之组合控件学习笔记分享

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自定义控件之组合控件学习笔记分享

做到以上步骤就可以了,希望本文所述对大家学习android自定义控件有所帮助。