Android開(kāi)發(fā)手冊(cè)Chip監(jiān)聽(tīng)及ChipGroup監(jiān)聽(tīng)
??Chip監(jiān)聽(tīng)
選中狀態(tài)的監(jiān)聽(tīng):setOnCheckedChangeListener,該監(jiān)聽(tīng)只有設(shè)置了checkable 屬性為true或者使用了【filter/entry/choice】這三個(gè)style主題的時(shí)候才生效。
點(diǎn)擊事件的監(jiān)聽(tīng):setOnClickListener
關(guān)閉按鈕被點(diǎn)擊的監(jiān)聽(tīng):setOnCloseIconClickListener
Java
myChip.setOnCloseIconClickListener(View.OnClickListener { v: View? -> //進(jìn)行業(yè)務(wù)處理 Log.e("TAG", "onCreate: Chip文字后面圖標(biāo)點(diǎn)擊事件") }) myChip.setOnClickListener(View.OnClickListener { v: View? -> //進(jìn)行業(yè)務(wù)處理 Log.e("TAG", "onCreate: Chip整體普通點(diǎn)擊事件") }) myChip.setOnCheckedChangeListener(CompoundButton.OnCheckedChangeListener { buttonView: CompoundButton?, isChecked: Boolean -> //進(jìn)行業(yè)務(wù)處理 Log.e("TAG", "onCreate: Chip選中狀態(tài)監(jiān)聽(tīng)") })
Kotlin
myChip.setOnCloseIconClickListener(v -> { //進(jìn)行業(yè)務(wù)處理 Log.e("TAG", "onCreate: Chip文字后面圖標(biāo)點(diǎn)擊事件"); }); myChip.setOnClickListener(v -> { //進(jìn)行業(yè)務(wù)處理 Log.e("TAG", "onCreate: Chip整體普通點(diǎn)擊事件"); }); myChip.setOnCheckedChangeListener((buttonView, isChecked) -> { //進(jìn)行業(yè)務(wù)處理 Log.e("TAG", "onCreate: Chip選中狀態(tài)監(jiān)聽(tīng)"); });
??ChipGroup監(jiān)聽(tīng)
myChipGroup.setOnCheckedChangeListener(new ChipGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(ChipGroup group, int checkedId) { //看到這的小伙伴可能就疑問(wèn)了,區(qū)分view的id做不同的業(yè)務(wù),如果是布局中寫(xiě)好的還可以,但實(shí)際上子view應(yīng)該是根據(jù)接口數(shù)據(jù)添加進(jìn)去的,這些點(diǎn)擊怎么區(qū)分呢? //我們下篇示例做個(gè)完整的。 Log.e("TAG", "onCheckedChanged: 選中view的id"); } });
??實(shí)例
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.google.android.material.chip.ChipGroup android:id="@+id/myChipGroupExample" android:layout_width="wrap_content" app:singleSelection="true" android:layout_height="wrap_content"> </LinearLayout>
Java
public class TestChipAndChipGroupActivity extends AppCompatActivity { private List<Chip> chipViewList = new ArrayList<>(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_chip_chipgroup); ChipGroup myChipGroupExample = findViewById(R.id.myChipGroupExample); List<String> dataList = new ArrayList<>(); dataList.add("芝麻粒兒"); dataList.add("這是你的業(yè)務(wù)數(shù)據(jù)"); dataList.add("根據(jù)業(yè)務(wù)數(shù)據(jù)"); dataList.add("創(chuàng)建子View"); dataList.add("公眾號(hào)"); dataList.add("空名先生"); for (String temp : dataList) { myChipGroupExample.addView(createChipView(temp)); } myChipGroupExample.setOnCheckedChangeListener(new ChipGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(ChipGroup group, int checkedId) { //看到這的小伙伴可能就疑問(wèn)了,區(qū)分view的id做不同的業(yè)務(wù),如果是布局中寫(xiě)好的還可以,但實(shí)際上子view應(yīng)該是根據(jù)接口數(shù)據(jù)添加進(jìn)去的,這些點(diǎn)擊怎么區(qū)分呢? //我們下篇示例做個(gè)完整的。 for (Chip tempChip : chipViewList) { if (tempChip.getId() == checkedId) { Log.e("TAG", "onCheckedChanged: 選中view的id內(nèi)容:" + tempChip.getText()); } } } }); } private View createChipView(String temp) { Chip chipView = new Chip(this); chipView.setId(View.generateViewId()); chipView.setText(temp); chipView.setChipIcon(getDrawable(R.drawable.icon_xin)); //設(shè)置是否可以選中 chipView.setCheckable(true); chipView.setTextSize(18); chipViewList.add(chipView); return chipView; } }
Kotlin代碼
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_test) val myChipGroupExample = findViewById<ChipGroup>(R.id.myChipGroupExample) val dataList: MutableList<String> = java.util.ArrayList() dataList.add("芝麻粒兒") dataList.add("這是你的業(yè)務(wù)數(shù)據(jù)") dataList.add("根據(jù)業(yè)務(wù)數(shù)據(jù)") dataList.add("創(chuàng)建子View") dataList.add("公眾號(hào)") dataList.add("空名先生") for (temp in dataList) { myChipGroupExample.addView(createChipView(temp!!)) } myChipGroupExample.setOnCheckedChangeListener { group, checkedId -> //看到這的小伙伴可能就疑問(wèn)了,區(qū)分view的id做不同的業(yè)務(wù),如果是布局中寫(xiě)好的還可以,但實(shí)際上子view應(yīng)該是根據(jù)接口數(shù)據(jù)添加進(jìn)去的,這些點(diǎn)擊怎么區(qū)分呢? //我們下篇示例做個(gè)完整的。 for (tempChip in chipViewList) { if (tempChip.id == checkedId) { Log.e("TAG", "onCheckedChanged: 選中view的id內(nèi)容:" + tempChip.text) } } } } private val chipViewList: MutableList<Chip> = ArrayList() private fun createChipView(temp: String): View? { val chipView = Chip(this) chipView.id = View.generateViewId() chipView.text = temp chipView.chipIcon = getDrawable(R.drawable.icon_xin) //設(shè)置是否可以選中 chipView.isCheckable = true chipView.textSize = 18f chipViewList.add(chipView) return chipView }
效果展示
以上就是Android開(kāi)發(fā)手冊(cè)Chip監(jiān)聽(tīng)及ChipGroup監(jiān)聽(tīng)的詳細(xì)內(nèi)容,更多關(guān)于Android開(kāi)發(fā)Chip及ChipGroup監(jiān)聽(tīng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android實(shí)現(xiàn)用戶(hù)圓形頭像和模糊背景
這篇文章主要介紹了Android實(shí)現(xiàn)用戶(hù)圓形頭像和模糊背景 ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04Android開(kāi)發(fā)實(shí)現(xiàn)的標(biāo)準(zhǔn)體重計(jì)算器功能示例
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)的標(biāo)準(zhǔn)體重計(jì)算器功能,結(jié)合實(shí)例形式分析了Android體重計(jì)算器的界面布局與功能實(shí)現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下2017-12-12Android 本地廣播和強(qiáng)制下線功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 本地廣播和強(qiáng)制下線功能的實(shí)現(xiàn)代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07android studio 安裝完成ButterKnife插件卻無(wú)法使用(解決方案)
這篇文章主要介紹了android studio 安裝完成ButterKnife插件卻無(wú)法使用問(wèn)題,本文通過(guò)圖文并茂的形式給大家分享解決方法,對(duì)大家有非常好的幫助,需要的朋友可以參考下2020-03-03Android開(kāi)發(fā)之PopupWindow創(chuàng)建彈窗、對(duì)話框的方法詳解
這篇文章主要介紹了Android開(kāi)發(fā)之PopupWindow創(chuàng)建彈窗、對(duì)話框的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android使用PopupWindow創(chuàng)建對(duì)話框相關(guān)操作技巧,需要的朋友可以參考下2019-03-03如何在Android中實(shí)現(xiàn)漸顯按鈕的左右滑動(dòng)效果
本篇文章是對(duì)在Android中實(shí)現(xiàn)漸顯按鈕的左右滑動(dòng)效果進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06