日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[基础控件]---状态切换控件CompoundButton及其子类CheckBox、RadioButton、ToggleButton、switch事件监听与场景使用...

發(fā)布時間:2024/8/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [基础控件]---状态切换控件CompoundButton及其子类CheckBox、RadioButton、ToggleButton、switch事件监听与场景使用... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、事件監(jiān)聽

對于普通的Button,對其進行事件監(jiān)聽Google官方給出了常見的三種監(jiān)聽方式:1、對每一個button設置事件監(jiān)聽器button.setOnClickListener(View.OnclickListener? listener);此種方法當button按鈕較多時代碼顯得多、亂、不夠簡潔明了。

2、在Activity中實現(xiàn)接口View.OnclickListener,然后重寫void onClick(View v)方法,在方法中通過switch(v.getId())予以區(qū)分不同Button。此種方法較為簡潔,但是需要實現(xiàn)View.OnclickListener接口。3、在xml布局中在想要被監(jiān)聽的

button上添加屬性:android:onClick=”doClick”屬性。在Activity 中添加監(jiān)聽方法public void doClick(View view){},此種方法書寫簡單、明了、不需要實現(xiàn)額外的接口。推薦使用此種方法。也是Google官方文檔中常見用法。

對于狀態(tài)切換控件CompoundButton,不僅要對事件觸發(fā)的監(jiān)聽,還有對狀態(tài)切換的監(jiān)聽。所以在CompoundButton中需要對其進行兩個監(jiān)聽:事件觸發(fā)、狀態(tài)切換。監(jiān)聽的方式與普通Button三種監(jiān)聽方式相似。只不過是多了一個監(jiān)聽狀態(tài)的一項

而已。說多了都是廢話,還是直接上碼。

場景一:對UI界面上多個CompoundButton的事件監(jiān)聽做統(tǒng)一處理。

<ToggleButtonandroid:id="@+id/togglebutton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:textOff="關"android:textOn="開" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><CheckBoxandroid:id="@+id/checkbox_meat"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="肉" /><CheckBoxandroid:id="@+id/checkbox_cheese"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="奶" /></LinearLayout><RadioGroupandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><RadioButtonandroid:id="@+id/radiobutton_add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="增" /><RadioButtonandroid:id="@+id/radiobutton_delete"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="刪" /><RadioButtonandroid:id="@+id/radiobutton_update"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="改" /><RadioButtonandroid:id="@+id/radiobutton_seach"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="doClick"android:text="查" /></RadioGroup>

有了布局,下面上Java代碼對其所有的CompoundButton控件進行統(tǒng)一監(jiān)聽

/*** 向上轉(zhuǎn)型的目的是為了獲取子控件當前狀態(tài)。* @param view*/public void doClick(View view) {//1、被選中:toogle中isChecked==onboolean isChecked=((CompoundButton)view).isChecked();//向上轉(zhuǎn)型:獲取當前狀態(tài)//2、被點擊switch (view.getId()) {case R.id.togglebutton:if(isChecked){Log.i("MyInfo", "開");}else{Log.i("MyInfo", "關");}break;case R.id.checkbox_meat:if(isChecked){Log.i("MyInfo", "肉被選中");}else{Log.i("MyInfo", "肉被取消");}break;case R.id.checkbox_cheese:break;case R.id.radiobutton_add://切記:RadioButton無狀態(tài)的切換,僅有按鈕的切換。所以僅需判斷選中狀態(tài) if(isChecked)if(isChecked)break;case R.id.radiobutton_delete:if(isChecked)break;case R.id.radiobutton_update:if(isChecked)break;case R.id.radiobutton_seach:if(isChecked)break;default:break;}}

在doClick()方法中總體上執(zhí)行了兩個步驟:1被選中---->2被點擊。通常這兩個步驟先后順序應該為被點擊----->被選中。但是這樣需要對每一個子控件分支中都需要添加是否被選中的判斷,代碼顯得重復。

所以在此我們使用逆向被點擊----->被選中。在被選中這一步中使用一個向上轉(zhuǎn)型是為了可以獲取所有CompoundButton子類的狀態(tài)。如果直接強轉(zhuǎn)為某一具體子類,則不具備通用性,不適應判斷所有CompoundButton

子類的被選中狀態(tài)。

當UI界面中狀態(tài)切換控件CompoundBuuton與普通Button均存在的情況下,建議對兩種控件的使用不同的方法進行監(jiān)聽,例如:android:onClick=”compoundButtonClick”與android:onClick=”buttonClick”

?

二、CompoundButton擴展

---未完待續(xù)

轉(zhuǎn)載于:https://www.cnblogs.com/android001/p/4311558.html

總結(jié)

以上是生活随笔為你收集整理的[基础控件]---状态切换控件CompoundButton及其子类CheckBox、RadioButton、ToggleButton、switch事件监听与场景使用...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。