Android自定义属性

    xiaoxiao2023-03-24  4

    Android自定义属性,我们首先可以打开我们的SDk,然后我们可以看到这个platforms\android-19\data\res\values路径的下的attrs.xml文件。我们打开后可以看一下Android系统自带的属性是如何定义的。我们可以随便看一个比如TextView。

    从这里我们可以看到TextView的各种属性,那么我们就可以模仿系统的写法,自己写一个自己控件的属性。

    首先我们要创建一个attrs.xml的文件,放到我们开发工具的values目录下。

    然后我们可以创建一个自己想要的控件和控件属性。

    这是自定义属性

    这是自定义属性类的代码。

    public class Setting extends RelativeLayout{ private CheckBox cb_box; private TextView tv_des; private String mDestitle; private String mDesoff; private String mDeson; private static final String Name="http://schemas.android.com/apk/res/com.example.demo360"; private void initAttrs(AttributeSet attrs) { // TODO Auto-generated method stub mDestitle=attrs.getAttributeValue(Name,"destitle"); //这里我们可以得到我们想要的自定义属性的值。 mDesoff=attrs.getAttributeValue(Name,"desoff"); mDeson=attrs.getAttributeValue(Name,"deson"); Log.v("aa", "11"+mDestitle); Log.v("aa", "22"+mDesoff); } public boolean isCheck(){ return cb_box.isChecked(); } public void setCheck(boolean isCheck){ cb_box.setChecked(isCheck); if(isCheck){ tv_des.setText(mDeson); }else{ tv_des.setText(mDesoff); } } //我们需要重写里面的构造器。 public Setting(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub View.inflate(context, R.layout.setting_item_view, this);//这个相当于是把我们需要的布局加到这个控件上。 TextView tv_title = (TextView) findViewById(R.id.tv_title); tv_des = (TextView) findViewById(R.id.tv_des); cb_box = (CheckBox) findViewById(R.id.cb_box); initAttrs(attrs); tv_title.setText(mDestitle); } }

    转载请注明原文地址: https://ju.6miu.com/read-1202637.html
    最新回复(0)