Android材质-无法转换为com.google.Android.Material.chip.ChipGroup
我有一个Android材质-无法转换为com.google.Android.Material.chip.ChipGroup,android,kotlin,material-design,androidx,Android,Kotlin,Material Design,Androidx,我有一个component\u category\u view.xml,其中一个芯片组在一个constraintLayout中初始化,该constraintLayout具有一个idcategoryList, 我正在运行下面的CategoryView.kt类,对其进行充气并使用芯片动态更新,并将其放置在我的活动中 class CategoryView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null,
component\u category\u view.xml
,其中一个芯片组在一个constraintLayout中初始化,该constraintLayout具有一个idcategoryList
,
我正在运行下面的CategoryView.kt
类,对其进行充气并使用芯片动态更新,并将其放置在我的活动中
class CategoryView @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
init {
inflateLayout()
}
private fun inflateLayout() {
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
inflater.inflate(R.layout.component_category_view, this, true)
}
fun updateCategories(categories: List<Category>){
categories.forEach {
var chipText = "${it.title.capitalize()} (${it.amount})"
val chip = Chip(this@CategoryView.context)
chip.text = chipText
chip.isCheckable = true
chip.chipBackgroundColor = null
categoryList.addView(chip)
}
}
}
使用Material主题代替appCompact解决芯片问题:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.Bridge">
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
及
使用Material主题代替appCompact解决芯片问题:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.Bridge">
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
及
在我的例子中,错误是由
Chip
视图中的id
字段引起的
<com.google.android.material.chip.Chip
android:id="@+id/chip_fragment_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
更改
id
字段的值后,错误消失了。在我的例子中,错误是由芯片
视图中的id
字段引起的
<com.google.android.material.chip.Chip
android:id="@+id/chip_fragment_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
更改
id
字段的值后,错误消失。我的清单已经在使用material主题`android:theme=“@style/theme.MaterialComponents.Light.NoActionBar”`感谢您迄今为止的帮助,但categoryList是我的芯片组的名称,我已将xml添加到我的问题中,以便您可以看到它。因此,您的答案中唯一的变化是将新芯片的上下文(在我的例子中)设置为categoryList.context,同样的错误会发生,但在创建芯片的过程中,将其设置为“context”会导致同样的错误,但在芯片组之外也会发生,就像我的问题一样。如果我使用(val chip=chip(context)),则会发生在第71行(添加行)如果我使用(val chip=chip(categoryList.context))它出现在第34行(初始化行)那么你使用categoryList.context,哪一行是34当然行chip作为视图表明chip是CategoryView。仅使用chip我的清单已经使用了material-theme`android:theme=“@style/Theme.MaterialComponents.Light.NoActionBar”`感谢您迄今为止的帮助,但categoryList是我的芯片组的名称,我已将xml添加到我的问题中,以便您可以看到它。因此,您的答案中唯一的更改是设置新芯片的上下文(在我的情况下)对于categoryList.context,同样的错误会发生,但是在创建芯片的过程中,将其设置为“context”也会发生同样的错误,但是在添加到芯片组的过程中,就像我的问题一样。如果我使用(val chip=chip(context)),它会发生在第71行(添加行),如果我使用(val chip=chip(categoryList.context)),它会发生在第34行(初始化行)您使用categoryList.context,哪一行是34当然行chip,因为视图指示chip是CategoryView。只使用chip
<com.google.android.material.chip.Chip
android:id="@+id/chip_fragment_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>