您的位置:首页 > 其它

自定义属性

2015-12-21 17:26 120 查看
参照:

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) {
this(context,null);

}
public HomeItemContentView(Context context, AttributeSet attrs) {
this(context, attrs,0);

}
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)欢迎各位纠正错误,评论,吐槽!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: