自定义属性

参照:
sdk->platforms->android-17->data->res->values->attrs.xml

思路:

  • 在values下建一个attrs.xml

  • 在布局中自定义一个命名空间

  • 在自定义view中获取属性值
    code如下

attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="HomeItemContentView">
        <attr name="home_title" format="string" />
    </declare-styleable>

</resources>

自定义的view



import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; /** * Created by admin on 2015/12/19. */ public class HomeItemContentView extends RelativeLayout { private ImageView mHomeIv;//主页内容图片 private TextView mHomeTxt;//主页内容标题 private String title; private static final String NAMESPASE = "http://schemas.android.com/apk/res-auto";//命名空间 public HomeItemContentView(Context context) { super(context); initView(); } public HomeItemContentView(Context context, AttributeSet attrs) { super(context, attrs); title = attrs.getAttributeValue(NAMESPASE, "home_title"); //根据属性名获得属性值 initView(); } public HomeItemContentView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(); title = attrs.getAttributeValue(NAMESPASE, "home_title"); //根据属性名获得属性值 } /** * 初始化布局 */ private void initView() { //将自定义好的布局文件设置给当前的SettingItemView View.inflate(getContext(), R.layout.home_content_part, this); mHomeIv = (ImageView) findViewById(R.id.iv_attendance); mHomeTxt = (TextView) findViewById(R.id.txt_title); setHomeContentTitle(title);//设置主页标题 } /** * 设置图片 * @param ImageId */ public void setHomeContentImage(int ImageId){ mHomeIv.setImageResource(ImageId); } /** * 设置标题 * @param title */ public void setHomeContentTitle(String title){ mHomeTxt.setText(title); } } 

属性添加

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<!--自己命名空间-->
    xmlns:Inheritors="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/baseColorGrey"
    android:orientation="vertical"
    tools:context="com.energy.mytest.MainActivity">
 <com.energy.mytest.HomeItemContentView
                android:id="@+id/home_attendance"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                <!--自己定义的属性-->
                Inheritors:home_title="考勤"
                />
</LinearLayout>

自定义布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lin_home_content_part" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" >

        <ImageView  android:id="@+id/iv_attendance" android:layout_width="40dp" android:layout_height="40dp" android:layout_marginTop="10dp" android:layout_marginLeft="10dp" android:src="@mipmap/home_attendance" android:layout_centerVertical="true" android:paddingRight="10dp"/>

        <TextView  android:id="@+id/txt_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_toRightOf="@id/iv_attendance" android:textSize="16sp" />

        <View  android:layout_width="match_parent" android:layout_height="0.5dp" android:layout_below="@id/iv_attendance" android:layout_toRightOf="@id/iv_attendance" android:background="#d2d2d2" />


</RelativeLayout>

传承者(Inheritors)欢迎各位纠正错误,评论,吐槽!!!

你可能感兴趣的:(布局)