用例:我正在制作一个类别选择器,用户必须从具有多个芯片的芯片组中选择5个芯片。不应允许用户选择超过5个筹码。
我的芯片组代码:
<com.google.android.material.chip.ChipGroup
android:id="@+id/category_chip_group"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
>
<com.google.android.material.chip.Chip
android:id="@+id/tech_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Technology"/>
<com.google.android.material.chip.Chip
android:id="@+id/sports_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sports and Fitness"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"/>
<com.google.android.material.chip.Chip
android:id="@+id/public_speakin_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Public Speaking"/>
<com.google.android.material.chip.Chip
android:id="@+id/biz_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Business and careers"/>
<com.google.android.material.chip.Chip
android:id="@+id/read_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Reading and Writing"/>
<com.google.android.material.chip.Chip
android:id="@+id/yoga_med_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Yoga and meditation"/>
<com.google.android.material.chip.Chip
android:id="@+id/sing_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Singing"/>
<com.google.android.material.chip.Chip
android:id="@+id/dance_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Dancing"/>
<com.google.android.material.chip.Chip
android:id="@+id/food_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Food Blogging"/>
<com.google.android.material.chip.Chip
android:id="@+id/gaming_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Gaming"/>
<com.google.android.material.chip.Chip
android:id="@+id/beauty_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Beauty and Makeup"/>
<com.google.android.material.chip.Chip
android:id="@+id/fashion_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Fashion and Lifestyle"/>
<com.google.android.material.chip.Chip
android:id="@+id/photography_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Photography"/>
<com.google.android.material.chip.Chip
android:id="@+id/music_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Music"/>
<com.google.android.material.chip.Chip
android:id="@+id/movies_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Movies and TV shows"/>
<com.google.android.material.chip.Chip
android:id="@+id/travel_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Travel"/>
<com.google.android.material.chip.Chip
android:id="@+id/art_and_design_chip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checkable="true"
android:clickable="true"
android:focusable="true"
app:chipBackgroundColor="@drawable/bg_chip_list"
android:text="Art and design"/>
</com.google.android.material.chip.ChipGroup>我的用于芯片选择的java代码
Chip chip = (Chip) category_chips.getChildAt(i);
if (chip.isChecked()) {
Log.e("i", "" + i);
i = i + 1;
categories.add(chip.getText().toString());
if (i > 5) {
chip.setChecked(false);
chip.setSelected(false);
}
}我想将所选筹码中的字符串添加到数组列表中,此代码是我所做的尝试之一。我是一个初学者,我不明白如何实现这个特性。
请告诉我如何在java中实现这个用例。我在stackoverflow上尝试了很多答案,但没有找到一个满足我的用例。
发布于 2020-05-12 15:27:15
您可以在您的芯片中添加一个OnCheckedChangeListener,并在ChipGroup中检查检查的芯片数量。类似于:
ChipGroup chipGroup = findViewById(R.id.category_chip_group);
..
chip.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
if (checked) {
//Get all checked chips in the group
List<Integer> ids = chipGroup.getCheckedChipIds();
if (ids.size() > 5) {
chip.setChecked(false); //force to unchecked the chip
}
}
}
});发布于 2020-05-11 01:48:21
如下所示更改芯片样式:
<com.google.android.material.chip.Chip
...
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.Chip.Filter"
...
/>将选中的监听器添加到所有芯片:
tech_chip.setOnCheckedChangeListener(this);
....
art_and_design_chip.setOnCheckedChangeListener(this);onCheckedChanged方法:
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
Chip chip = findViewById(compoundButton.getId());
String chipText = chip.getText().toString();
if(categories.size()< 5){
categories.add(chipText);
}else {
if(categories.contains(chipText)){
categories.remove(chipText);
}else{
chip.setChecked(false);
}
}
}https://stackoverflow.com/questions/61714643
复制相似问题