在Android开发中使用自定义组合控件的例子

2019-12-10 18:55:34丽君

 

三、自定义一个view继承自你需要的布局
iniview(Context context)初始化自定义的布局文件

根据需求自定义一些API方法

public class SettingItemView extends RelativeLayout {
  private CheckBox cb_status;
  private TextView tv_title;
  private TextView tv_desc;

  private String title;
  private String desc_on;
  private String desc_off;



  public void iniview(Context context){
    View.inflate(context, R.layout.setting_item_view, this);
    cb_status = (CheckBox)findViewById(R.id.cb_status);
    tv_title = (TextView)findViewById(R.id.tv_title);
    tv_desc = (TextView)findViewById(R.id.tv_desc);
  }

  public SettingItemView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    iniview(context);
  }

  public SettingItemView(Context context, AttributeSet attrs) {
    super(context, attrs);
    iniview(context);
    desc_on = attrs.getAttributeValue("http://www.easck.com/apk/res/com.victor.mobilesafe","desc_on");
    desc_off = attrs.getAttributeValue("http://www.easck.com/apk/res/com.victor.mobilesafe","desc_off");
    tv_title.setText(title);
    setDesc(desc_off);
  }

  public SettingItemView(Context context) {
    super(context);
    iniview(context);
  }
  public boolean isChecked(){
    return cb_status.isChecked();

  }
  public void setChecked(boolean checked){
    if (checked) {
      setDesc(desc_on);
    }else{
      setDesc(desc_off);
    }
    cb_status.setChecked(checked);

  }
  public void setDesc(String text){
    tv_desc.setText(text);
  }

}

四、在布局文件中使用该自定义组合控件
别忘记声明自定义命名空间
xmlns:victor="http://www.easck.com/apk/res/com.victor.mobilesafe"

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://www.easck.com/apk/res/android"
  xmlns:victor="http://www.easck.com/apk/res/com.victor.mobilesafe"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" >
 <com.victor.mobilesafe.ui.SettingItemView
    android:id="@+id/siv_update"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    victor:desc_off="自动更新关闭"
    victor:desc_on="自动更新开启"
    victor:title="设置自动更新" >
  </com.victor.mobilesafe.ui.SettingItemView>
</LinearLayout>