要实现的效果如下图:
使用自定义组合控件实现,大大提高了复用性,我们可以接二连三的添加设置信息了。
1 设置好界面布局文件。
2 设置自定义组合控件,继承布局,实现三构造方法,写个initView将布局文件转成View,在三构造函数调用这个initView方法
3 在其他布局文件可以开始使用自定义控件了。
细节:
设置好的CheckBox boolean存储到.xml文件中,当应用开启自动加载信息,设置配置界面。
1 设置自定义布局xml文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="65dip" >
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_marginTop="10dip"
android:text="是否开启自动更新"
android:textColor="#000000"
android:textSize="20dip" />
<TextView
android:id="@+id/tv_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_title"
android:layout_marginLeft="10dip"
android:text="自动更新已关闭"
android:textColor="#88000000"
android:textSize="18dip" />
<CheckBox
android:id="@+id/cb_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:clickable="false" />
<TextView
android:layout_width="match_parent"
android:layout_height="0.2dip"
android:layout_alignParentBottom="true"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="5dip"
android:background="#88000000" />
</RelativeLayout>
2 继承布局,实现自定义控件,初始化布局和构造方法
package com.itheima.mobilesafe.ui;
import com.itheima.mobilesafe.R;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class SettingItemView extends RelativeLayout {
private CheckBox cb_status;
private TextView tv_msg;
private void initView(Context context) {
View view =View.inflate(context, R.layout.setting_item,this);
cb_status =(CheckBox) view.findViewById(R.id.cb_status);
tv_msg =(TextView) view.findViewById(R.id.tv_msg);
}
public SettingItemView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context);
}
public SettingItemView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public SettingItemView(Context context) {
super(context);
initView(context);
}
/**
* 获取CheckBox当前状态
* @return 返回状态
*/
public boolean isCheckBox(){
return cb_status.isChecked();
}
/**
* 设置CheckBox状态
* @param checked 设置的值
*/
public void setCheckBox(boolean checked){
cb_status.setChecked(checked);
}
/**
* 设置状态的消息信息
* @param text 设置的内容
*/
public void setStatusMessage(String text){
tv_msg.setText(text);
}
}
3 其他布局文件调用:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="55dip"
android:background="#8866ff00"
android:gravity="center"
android:text="设置中心"
android:textSize="25sp" />
<com.itheima.mobilesafe.ui.SettingItemView
android:id="@+id/siv_update"
android:layout_width="match_parent"
android:layout_height="65dip" />
</LinearLayout>
具体功能看源代码吧,下载:
http://yunpan.cn/cyMArirmgqAbZ 访问密码 ebe0