- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何使 ChipGroup
像 radioButton
一样工作,在更改背景颜色的同时可以一次选择一个项目。
我看到了this link对于这样的事情,但它对我没有帮助,因为我正在使用 layoutInflater
来显示我的芯片项目。
firebaseFirestore.collection("Categories").addSnapshotListener((queryDocumentSnapshots, e) -> {
for (DocumentChange doc: queryDocumentSnapshots.getDocumentChanges()){
if (doc.getType() == DocumentChange.Type.ADDED){
Categories categories = doc.getDocument().toObject(Categories.class);
post_list.add(categories);
Chip chip = (Chip) getLayoutInflater().inflate(R.layout.chip_item_layout, chipGroup, false);
chip.setText(categories.getTitle());
chipGroup.addView(chip);
chipGroup.setOnCheckedChangeListener((chipGroup, id) -> {
Chip chip2 = ((Chip) chipGroup.getChildAt(chipGroup.getCheckedChipId()));
if (chip2 != null) {
for (int i = 0; i < chipGroup.getChildCount(); ++i) {
chipGroup.getChildAt(i).setClickable(true);
chip2.setChipBackgroundColorResource(R.color.customOrange);
}
chip2.setClickable(false);
}
});
}
}
});
最佳答案
在您的 ChipGroup
中使用 app:singleSelection="true"
属性。通过这种方式,ChipGroup
可以配置为一次只允许检查一个芯片。
<com.google.android.material.chip.ChipGroup
app:singleSelection="true"
..>
然后您可以使用布局 chip_item_layout.xml
中的 app:chipBackgroundColor
属性设置选择器颜色。
类似于:
<com.google.android.material.chip.Chip
style="@style/Widget.MaterialComponents.Chip.Choice"
app:chipBackgroundColor="@color/chip_background_color"
..>
注意 style="@style/Widget.MaterialComponents.Chip.Choice"
因为它将芯片定义为 android:checkable="true".
chip_background_color
是一个选择器,您可以在其中定义不同状态下您喜欢的颜色。它是默认选择器,您可以更改它:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 24% opacity -->
<item android:alpha="0.24" android:color="?attr/colorPrimary" android:state_enabled="true" android:state_selected="true"/>
<item android:alpha="0.24" android:color="?attr/colorPrimary" android:state_enabled="true" android:state_checked="true"/>
<!-- 12% of 87% opacity -->
<item android:alpha="0.10" android:color="?attr/colorOnSurface" android:state_enabled="true"/>
<item android:alpha="0.12" android:color="?attr/colorOnSurface"/>
</selector>
所选芯片由颜色定义,在您的情况下是第一行 (android:state_selected="true"
)。
如果您想以编程方式进行,只需使用(不在OnCheckedChangeListener
中)setChipBackgroundColorResource
方法。
chip.setChipBackgroundColorResource(R.color.chip_background_color);
此外,如果您想要要求至少进行一次选择,您可以使用app:selectionRequired
属性。此属性需要 1.2.0(从 1.2.0-alpha02
开始)
关于java - 如何让 ChipGroup 像 radioGroup 一样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58245738/
这个问题在这里已经有了答案: ChipGroup single selection (8 个答案) 关闭 3 年前。 这是我根据列表设置芯片组和内部芯片的代码: val chipGroup = re
我正在尝试在水平滚动 ChipGroup 中创建一个包含 4 个 Chips 的 Activity。 此 Activity 使用 ChipGroup 作为 API 调用的过滤器,并且可以让 Extra
我已经制作了一个芯片组,我想在 java 中动态生成其内容,并用由字符串制成的过滤器芯片填充它。我已经制作了 Chipgroup,但在尝试添加芯片时我注意到,无论我做什么,芯片都不会响应点击。我还尝试
我正在尝试创建一个垂直对齐且每行最多包含一个项目的 ChipGroup?像这样: 因此,当您向组中添加新的 Chip 时,它会将自己对齐到底部或顶部(无关紧要)。 我试过强制设置 max-width:
我试图在芯片组中添加一个垂直分隔器以将主芯片与其他芯片分开。就像 YouTube 一样: 我试图通过这种方法添加它。在 Activity 中: item_chip_category.xm
我正在开发一个需要显示 ArrayList 中的多个芯片的应用程序。 请考虑以下代码: Java Chip lChip = new Chip(SignUpNextActivity.this); fo
这个问题在这里已经有了答案: How to get selected chips from ChipGroup? (5 个回答) 1年前关闭。 我是在 Android 中使用芯片的新手。 单击按钮时,
我正在设置一个 ChipGroup,并希望在我的 android 应用程序中单击 enter 时添加芯片。如何解决错误 IllegalStateException? 布局
我想创建 ChipGroup 2 路绑定(bind)适配器。我已经复制了默认的 RadioGroup 绑定(bind)适配器并进行了一些更改,但它不适用于两种方式。在以编程方式将数据设置为可观察的情况
我正在向设置为垂直方向的父线性布局动态添加 Material ChipGroup,但芯片项似乎是水平添加的。有什么办法可以让它垂直排列芯片项吗? setLayoutDirection() ChipGr
可能我的问题的解决方案非常简单,但显然我遗漏了一些东西并且坚持自己修复它。 问题: 我想要一个 ChipGroup,用户可以从 RecyclerView 过滤内容,但不幸的是,我在尝试设置文本时遇到错
如何使 ChipGroup 像 radioButton 一样工作,在更改背景颜色的同时可以一次选择一个项目。 我看到了this link对于这样的事情,但它对我没有帮助,因为我正在使用 layoutI
我有一个带有 ChipGroup 的布局,其筹码将以编程方式填充,但我想可视化筹码在布局中的样子,有没有办法显示假筹码,例如使用tools 命名空间? 最佳答案 这不是您要求的真正解决方案,但它可以完
有没有办法改变默认 Material 芯片垂直填充或高度?来自docs我看到肯定有一种方法可以设置最小高度,但我想让芯片“更薄”,就像这个设计一样: 最佳答案 在 1.1.0-alpha* 版本中,为
我正在使用Material Chip第一次。 问题:我使用以下代码动态添加芯片。请检查我写的 app:singleSelection="true" 这对我来说很重要。 即使它一次选择多个芯片。 我想一
我在 ChipGroup 中有 Chips,在 HorizontalScrollView 中有这个 ChipGroup。但我的问题是最后一个 Chip 上的 marginEnd 不起作用! 我尝试
我是一名优秀的程序员,十分优秀!