Android实例-手机安全卫士(八)-自定义组合控件事件相应和改变状态

一、目标。

  实现自定义控件点击事件响应和内容状态变化。

  1、点击自定义控件内的任何区域时,CheckBox状态均会变化。

  2、自定义控件里面的内容会根据CheckBox的状态进行改变。

 效果图1:

技术分享    技术分享

二、代码实现。

  1、在自定义控件类(SettingItemView)中增加方法。

    ①.在自定义控件类对应的xml文件(SettingItemView)中设置各个控件的id,便于自定义控件类(SettingItemView)对它们进行操作。同时,设置CheckBox的clickable属性为false,这是为了让CheckBox失去可点击的属性。因为,CheckBox的点击事件相应比其他控件都高,所以当设置完成自定义控件点击事件后,点击自定义控件除CheckBox外的其他区域时,CheckBox状态和TextView内容都会改变,但特意点击CheckBox区域时,CheckBox状态会改变而TextView中的内容不会改变。

    ②.在自定义控件类(SettingItemView)的iniView方法中,通过this.findViewById(int id)方法找到自定义控件类对应的xml文件(SettingItemView)中的相应的三个控件。因为xml布局文件(SettingItemView)已经通过inflate方法装载至SettingItemView类中,所以可以采用this.find...方法。

代码:

技术分享
1 setting_update_checkbox = (CheckBox) this.findViewById(R.id.setting_update_checkbox);
2         setting_update_title = (TextView) this.findViewById(R.id.setting_update_title);
3         setting_update_content = (TextView) this.findViewById(R.id.setting_update_content);
View Code

    ③.在自定义控件类(SettingItemView)中新建boolean类型的方法(取名isChecked),用于判断自定义控件中的CheckBox是否被选中。该方法较简单,只需返回CheckBox的isChecked()方法即可。

代码如下:

技术分享
1 public boolean isChecked(){
2         return setting_update_checkbox.isChecked();
3     }
View Code

 

    ④.在自定义控件类(SettingItemView)中新建无返回值(void)的方法(取名setChecked(boolean checked)),参数为boolean checked,用于设置组合控件中CheckBox的状态。

代码如下:

技术分享
1 public void setChecked(boolean checked){
2         setting_update_checkbox.setChecked(checked);
3     }
View Code

 

    ⑤.在自定义控件类(SettingItemView)中新建无返回值(void)的方法(取名setContent(String text)),用于改变组合控件中相应文本控件的内容,传入String类型的参数作为新文本内容。

代码:

技术分享
1 public void setContent(String text){
2         setting_update_content.setText(text);
3     }
View Code

 

  2、在”设置中心“界面(SettingActivity)代码中。

    ①.创建自定义控件类(SettingItemView)的对象(取名siv_update),并通过findViewById方法找到”设置中心“界面(SettingActivity)布局文件(activity_setting.xml)中的SettingItemView控件。

    ②.为自定义控件类(SettingItemView)的对象(siv_update)设置setOnClickListener()方法,并在参数中new出OnClickListener()方法,自动复写onClick方法。在onClick方法中采用if...else..语句判断自定义控件对象(siv_update)是否被选中,判断条件为siv_update.isChecked()。如果siv_update被选中,则调用自定义控件对象(siv_update)的setChecked(false)方法并传入false,以取消选中,同时调用自定义控件对象(siv_update)的setContent(text)方法并传入想要写的文本(禁止软件联网时自动更新)。反之同样处理。

自定义控件设置点击事件监听器的代码如下:

技术分享
 1 siv_update.setOnClickListener(new OnClickListener() {
 2             
 3             @Override
 4             public void onClick(View v) {
 5                 //已经开启了自动升级
 6                 if(siv_update.isChecked()){
 7                     siv_update.setChecked(false);
 8                     siv_update.setContent("禁止软件联网时自动更新");
 9                 }else {
10                     //未开启自动升级
11                     siv_update.setChecked(true);
12                     siv_update.setContent("允许软件联网时自动更新");
13                 }
14             }
15         });
View Code

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。