【问题标题】:How can I add the new android chips dynamically in Android?如何在 Android 中动态添加新的 android 芯片?
【发布时间】:2018-05-23 17:46:24
【问题描述】:

我有一个名为 Question 的类,其中包含一个 String 标记数组。我正在尝试使用 Kotlin 在 Recyclerview 中显示每个问题以及新芯片中的每个标签。这些芯片将包含在一个芯片组中。

我的问题是:

如何将数组的每个标签元素添加到新芯片中? 我正在尝试这样做,但它显然不起作用。

if (tags != null) {
    for (tag in tags) {
        val chip = Chip(itemView.context)
    }
}

【问题讨论】:

  • 到目前为止,这是您的全部代码吗?您不会在任何地方将新的 Chip 实例添加到父 View。它也是一半 Kotlin 和一半 Java。

标签: android kotlin android-chips


【解决方案1】:

您可以像添加任何其他ViewGroup 一样添加Chips,如下所示:

for (index in tags.indices) {
  val chip = Chip(chipGroup.context)
  chip.text= "Item ${tags[index]}"

  // necessary to get single selection working
  chip.isClickable = true
  chip.isCheckable = true
  chipGroup.addView(chip)
}

对于 singleSelection 不要忘记添加到您的chipGroup:

chipGroup.isSingleSelection = true

或在xml中

app:singleSelection="true"

【讨论】:

  • @Choletski 这个问题是在 kotlin 中提出的,所以在 kotlin 中得到了回答。同样的事情也适用于 Java。这应该是一个非常简单的改变
  • @kandroidj 如何获取动态筹码的选定值
【解决方案2】:

我在尝试创建新芯片时总是遇到以下错误:

IllegalArgumentException:此组件要求您指定有效的 android:textAppearance 属性

这可以通过使用以下行填充自定义 R.layout.chip 来解决: android:textAppearance="@style/TextAppearance.MaterialComponents.Chip"

【讨论】:

    猜你喜欢
    • 2019-12-24
    • 2019-12-22
    • 2020-09-02
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2019-08-16
    • 2018-12-14
    相关资源
    最近更新 更多