首页 > 代码库 > Android开发学习笔记-自定义控件的属性
Android开发学习笔记-自定义控件的属性
若想让自定义控件变得更加方便灵活,则就需要对控件进行定义属性,使其用起来更方便。
下面是自定义控件属性的方法
1、添加attrs.xml,内容格式样式可以参考sdk\platforms\android-10\data\res\values\attrs.xml文件
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="CompoundButton"> <attr name="desc_title" format="string" /> <attr name="desc_on" format="string"/> <attr name="desc_off" format="string"/> </declare-styleable></resources>
2、在布局文件中引用命名空间,并设置自定义属性值,其中命名控件后面的为应用程序包名
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:frank="http://schemas.android.com/apk/res/com.frank.mobilesafe" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_maintitle" android:layout_width="match_parent" android:layout_height="55dp" android:background="#8866ff00" android:gravity="center" android:text="设置中心" android:textSize="22sp" /> <com.frank.mobilesafe.ui.SettingItemView frank:desc_title="有新版本升级控制" frank:desc_on="有新版本则进行升级" frank:desc_off="不进行升级" android:id="@+id/siv_update" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
3、在自定义控件的类里面的构造方法中对属性值进行获取或者设置。
public SettingItemView(Context context, AttributeSet attrs) { super(context, attrs); initView(context); String myNamespace = "http://schemas.android.com/apk/res/com.frank.mobilesafe"; str_desc_title = attrs.getAttributeValue(myNamespace, "desc_title"); str_desc_on = attrs.getAttributeValue(myNamespace, "desc_on"); str_desc_off = attrs.getAttributeValue(myNamespace, "desc_off"); tv_update_title.setText(str_desc_title); }
4、可对自定义属性值做其他用途的处理
/** * 设置组合控件的状态 * * @param isChecked */ public void SetChecked(boolean isChecked) { cb_update.setChecked(isChecked); if(isChecked) { SetDesc(str_desc_on); } else { SetDesc(str_desc_off); } } /** * 设置描述信息 * * @param isChecked */ public void SetDesc(String text) { tv_update_content.setText(text); }
Android开发学习笔记-自定义控件的属性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。