- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题在这里已经有了答案:
How to get selected chips from ChipGroup?
(5 个回答)
1年前关闭。
我是在 Android 中使用芯片的新手。
单击按钮时,我想从 ChipGroup 中获取选定的芯片。
Made 以某种方式检查每个 Chip 并将其添加到 Set 中,但希望使其更高效。不知何故,我自己没有找到我的问题的答案。
当我检查 2 Chips 并取消选中我检查的第一个 Chips 时,也会出现错误。
这是我的代码:
<com.google.android.material.chip.ChipGroup
android:id="@+id/chipGroup"
android:layout_width="300dp"
android:layout_height="wrap_content"
>
<com.google.android.material.chip.Chip
android:id="@+id/chip1"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:backgroundTint="#99FFFFFF"
/>
<com.google.android.material.chip.Chip
android:id="@+id/chip2"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:backgroundTint="#99FFFFFF"/>
<com.google.android.material.chip.Chip
android:id="@+id/chip3"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:backgroundTint="#99FFFFFF"/>
<com.google.android.material.chip.Chip
android:id="@+id/chip4"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4"
android:backgroundTint="#99FFFFFF"/>
<com.google.android.material.chip.Chip
android:id="@+id/chip5"
style="@style/Widget.MaterialComponents.Chip.Filter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:backgroundTint="#99FFFFFF"/>
</com.google.android.material.chip.ChipGroup>
Set<Integer> chipIds = new HashSet<>();
int chip1Id= 1;
int chip2Id= 2;
int chip3Id= 3;
int chip4Id= 4;
int chip5Id= 5;
chip1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip1Id);
} else {
for (int i : chipIds) {
if (i == chip1Id) {
chipIds.remove(i);
}
}
}
}
});
chip2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip2Id);
} else {
for (int i : chipIds) {
if (i == chip2Id) {
chipIds.remove(i);
}
}
}
}
});
chip3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip3Id);
} else {
for (int i : chipIds) {
if (i == chip3Id) {
chipIds.remove(i);
}
}
}
}
});
chip4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip4Id);
} else {
for (int i : chipIds) {
if (i == chip4Id) {
chipIds.remove(i);
}
}
}
}
});
chip5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
chipIds.add(chip5Id);
} else {
for (int i : chipIds) {
if (i == chip5Id) {
chipIds.remove(i);
}
}
}
}
});
最佳答案
这是我的解决方案:
<Button
android:id="@+id/bShow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/chipGroup"
android:layout_margin="10dp"
android:text="Show Checked"
android:onClick="buttonPressed"/>
import android.widget.Button;
import android.widget.Toast;
import android.view.View;
showResult = (Button) findViewById(R.id.bShow);
showResult.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
String msg = "Chips checked are:";
ChipGroup chg = findViewById(R.id.chipGroup);
int chipsCount = chg.getChildCount();
if (chipsCount == 0) {
msg += " None!!";
} else {
int i = 0;
while (i < chipsCount) {
Chip chip = (Chip) chg.getChildAt(i);
if (chip.isChecked() ) {
msg += chip.getText().toString() + " " ;
}
i++;
};
}
// show message
Toast.makeText(getApplicationContext(),msg, Toast.LENGTH_LONG).show();
}
});
关于android - 从 ChipGroup 中获取选定的 Chip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55905793/
在 XML 中没有这样的属性: chipTextColor 以编程方式 SpannableString 不工作: SpannableStringBuilder builder = new Spann
如何设置选中的 com.google.android.material.chip.Chip 颜色?我不希望它是默认的灰色。这是单选芯片组。 原始文档 here 最佳答案 只需设
我正在使用 md-chips 指令来生成芯片。但是,我希望有条件地禁用某些芯片,同时保持其他芯片可编辑。但根据文档,我们要么禁用所有芯片,要么不禁用所有芯片。 {{$chip}
我正在调查由提供的 Material 成分 implementation group: 'com.google.android.material', name: 'material', version
我正在尝试将ngMessages与md-chips Angular 形 Material 组件一起使用,但是我什么也没找到。我已经尝试过这种解决方案,但是没有用,
我想将自定义可绘制背景设置为Chip,就像 chip.setBackgroundDrawable(context.getResources()。getDrawable(R.drawable.bg_cu
我有一个 Material UI 芯片,当我点击该芯片时,我想阅读其中的文本。到目前为止,我的代码如下: board.current.addMarker('e4', { clas
在 Android 应用程序中,我需要在聊天气泡中创建可点击的筹码(见下图)。 我在 TextView 下方添加了一个 ChipGroup,但由于芯片的文本太长,它被剪掉了。 知道如何在 Chip 中
如何在表单内发送 mat-chip-list。即使元素仍然存在,我的提交按钮仍被禁用。那么我如何发送我的标签数组。请帮忙! 这是我的表格 form 下面是我到目前为止完成的代码。
如何在我的标签中实现这种外观? Image describing the style I need 我希望它: • 根据查看的页面更改文本的颜色(我已经通过默认的 supportLibrary 的 W
在 Angular 中,我想在自动完成中显示项目 (genreName)。在 .html我写了以下内容: 在 .ts文件,我写了以下代码: t
我在我的项目中使用了 table 组件。在第 4 列中,我使用 chips 显示玩家姓名,如下图所示: 我的问题是:如果我在 players 字符串中添加 2 个或更多名称,如下所示: playe
我正在使用 Angular Material 创建在输入字段中输入的筹码。因此,文档 examples 中给出的当前默认行为是在输入框中显示筹码。我不想在我的输入字段中显示这些芯片,我想做的是当用户输
我想定制一个 Material 芯片。 我认为这是如何做到的: .... lots more theme stuff here @style/MaterialChips @s
我一直在研究 CHIP8 仿真器,并使用 notepad++ 中的十六进制编辑器来查看十六进制值。我碰巧注意到一些游戏,如 David Winter 的“Blitz”,有奇数字节。 在CHIP8中,每
我一直在研究 CHIP8 仿真器,并使用 notepad++ 中的十六进制编辑器来查看十六进制值。我碰巧注意到一些游戏,如 David Winter 的“Blitz”,有奇数字节。 在CHIP8中,每
Md-chips 电子邮件验证 如何为 md-chips 创建电子邮件验证?我下面的表达式不起作用,因为每当我输入内容时都会调用 ng-keypress 指令。 建议?
我已经编写了一个chip-8模拟器。无论我做什么,似乎我都无法在屏幕上显示任何像素。奇怪的是,我已经从上到下检查了代码2天,并且确实存在看起来没有任何问题。它将.rom文件读入内存,并正确获取OP代码
我想要像下面这样去设计芯片布局。 当文本足够短以适应布局时,我想这样查看。 当文本太长无法容纳时,我希望它像这样显示并水平动画文本。 是否有可能设计一个布局来满足这两种需求。 我已经尝试过解决方案并已
操作码 DXYN:在坐标 (VX, VY) 处绘制一个宽度为 8 像素、高度为 N 像素的 Sprite 。从内存位置 I 开始,每行 8 个像素按位编码读取(每个字节的最高有效位显示在左侧);该指令
我是一名优秀的程序员,十分优秀!