由于设置中心条目中的布局都很类似,所以可以考虑使用自定义组合控件来简化实现

Android手机卫士(十四):自定义组合控件构件布局结构

  自定义组合控件

  1.将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用此布局结构的时候,直接使用组合控件对应的对象.

  2.将组合控件的布局,抽取到单独的一个xml中

  新建布局文件:setting_item_view.xml,将上篇文章中布局文件中的代码放进去

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="wrap_content" >  
  5.   
  6.     <RelativeLayout  
  7.         android:layout_width="match_parent"  
  8.         android:layout_height="wrap_content"  
  9.         android:padding="5dp" >  
  10.   
  11.         <TextView  
  12.             android:id="@+id/tv_title"  
  13.             android:layout_width="wrap_content"  
  14.             android:layout_height="wrap_content"  
  15.             android:text="自动更新设置"  
  16.             android:textColor="#000"  
  17.             android:textSize="18sp" />  
  18.   
  19.         <TextView  
  20.             android:id="@+id/tv_des"  
  21.             android:layout_width="wrap_content"  
  22.             android:layout_height="wrap_content"  
  23.             android:layout_below="@id/tv_title"  
  24.             android:text="自动更新已关闭"  
  25.             android:textColor="#000"  
  26.             android:textSize="18sp" />  
  27.   
  28.         <CheckBox  
  29.             android:id="@+id/cb_box"  
  30.             android:layout_width="wrap_content"  
  31.             android:layout_height="wrap_content"  
  32.             android:layout_alignParentRight="true"  
  33.             android:layout_centerVertical="true" />  
  34.   
  35.         <View  
  36.             android:layout_width="match_parent"  
  37.             android:layout_height="1dp"  
  38.             android:layout_below="@id/tv_des"  
  39.             android:background="#000" />  
  40.     </RelativeLayout>  
  41.   
  42. </RelativeLayout>  

  3.通过一个单独的类SettingItemView.java,去加载此段布局文件.

Java代码
  1. package com.wuyudong.mobilesafe.view;  
  2.   
  3. import com.wuyudong.mobilesafe.R;  
  4.   
  5. import android.content.Context;  
  6. import android.util.AttributeSet;  
  7. import android.view.View;  
  8. import android.widget.CheckBox;  
  9. import android.widget.RelativeLayout;  
  10. import android.widget.TextView;  
  11.   
  12. public class SettingItemView extends RelativeLayout {  
  13.   
  14.     private TextView tv_des;  
  15.     private CheckBox cb_box;  
  16.   
  17.     public SettingItemView(Context context) {  
  18.         this(context, null);  
  19.     }  
  20.   
  21.     public SettingItemView(Context context, AttributeSet attrs) {  
  22.         this(context, attrs, 0);  
  23.     }  
  24.   
  25.     public SettingItemView(Context context, AttributeSet attrs, int defStyle) {  
  26.         super(context, attrs, defStyle);  
  27.         // xml-->view 将设置界面的条目转换成view对象  
  28.         View.inflate(context, R.layout.setting_item_view, this);  
  29.         // 等同于以下两行代码  
  30.         /* 
  31.          * View view = View.inflate(context, R.layout.setting_item_view, null); 
  32.          * this.addView(view); 
  33.          */  
  34.           
  35.         //自定义组合控件中的标题描述  
  36.         TextView tv_title = (TextView) findViewById(R.id.tv_title);  
  37.         tv_des = (TextView) findViewById(R.id.tv_des);  
  38.         cb_box = (CheckBox) findViewById(R.id.cb_box);  
  39.     }  
  40.   
  41. }  

  这样只需要简单的几行代码就可以完成布局文件的调用

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <TextView  
  8.         style="@style/TitleStyle"  
  9.         android:text="设置中心" />  
  10.   
  11.     <!--  
  12.     <RelativeLayout  
  13.         android:layout_width="match_parent"  
  14.         android:layout_height="wrap_content"  
  15.         android:padding="5dp" >  
  16.   
  17.         <TextView  
  18.             android:id="@+id/tv_title"  
  19.             android:layout_width="wrap_content"  
  20.             android:layout_height="wrap_content"  
  21.             android:text="自动更新设置"  
  22.             android:textColor="#000"  
  23.             android:textSize="18sp" />  
  24.   
  25.         <TextView  
  26.             android:id="@+id/tv_des"  
  27.             android:layout_width="wrap_content"  
  28.             android:layout_height="wrap_content"  
  29.             android:layout_below="@id/tv_title"  
  30.             android:text="自动更新已关闭"  
  31.             android:textColor="#000"  
  32.             android:textSize="18sp" />  
  33.   
  34.         <CheckBox  
  35.             android:id="@+id/cb_box"  
  36.             android:layout_alignParentRight="true"  
  37.             android:layout_centerVertical="true"  
  38.             android:layout_width="wrap_content"  
  39.             android:layout_height="wrap_content" />  
  40.         <View   
  41.             android:layout_below="@id/tv_des"  
  42.             android:background="#000"  
  43.             android:layout_width="match_parent"  
  44.             android:layout_height="1dp"  
  45.               
  46.             />  
  47.     </RelativeLayout>  
  48.     -->  
  49.   
  50.     <com.wuyudong.mobilesafe.view.SettingItemView  
  51.         android:layout_width="match_parent"  
  52.         android:layout_height="wrap_content" >  
  53.     </com.wuyudong.mobilesafe.view.SettingItemView>  
  54.   
  55. </LinearLayout>  

  运行项目后,有如下效果:

Android手机卫士(十四):自定义组合控件构件布局结构

本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/example/683.html
2017年5月27日
发布:鸡啄米 分类:Android开发实例 浏览: 评论:0