【问题标题】:Can I create a gradient background color on a material Chip?我可以在材质芯片上创建渐变背景颜色吗?
【发布时间】:2019-08-14 03:55:29
【问题描述】:

我相信答案是肯定的,因为我可以看到 react here 的答案,但我不知道如何在 Kotlin/Java 中做到这一点。 我看到的唯一选项是setChipBackgroundColorResourcesetBackgroundColor,它们都需要颜色资源。如何使用渐变作为背景?

  • 我知道如何为任何常规视图设置背景,但只是芯片有问题。我试过这个chip.setBackgroundResource(R.drawable.gradient_background),但它只会让背景变灰

【问题讨论】:

  • @AdarshAnurag 不是真正的重复..

标签: android kotlin material-components material-components-android android-chips


【解决方案1】:

目前你做不到

  • setChipBackgroundColorResource 方法正在使用 color 而不是 drawable
  • setChipBackgroundColor 方法正在使用 ColorStateList
  • methodssetBackgroundResource,setBackgroundDrawable,setBackground只是产生一个警告:Do not set the background; Chip manages its own background drawable.

这是因为 Chip 小部件是 ChipDrawable 周围的薄视图包装器。 ChipDrawable 只是一个MaterialShapeDrawable whick,它通过以下方式管理其背景:

* chipStartPadding iconEndPadding closeIconStartPadding chipEndPadding * + + + + * | | | | * | iconStartPadding | textStartPadding textEndPadding | closeIconEndPadding | * | + | + + | + | * | | | | | | | | * v v v v v v v v * +-----+----+------------+----+----+--------------- ------+----+----+----------+----+-----+ * | | | XX | | | XX X X X XXX | | | X X | | | * | | | XX | | | X X X X X X | | | XX XX | | | * | | | XX XX | | | X XXXX X XXX | | | XX | | | * | | | XXX | | | X X X X X X | | | XX XX | | | * | | | X | | | XX X X X X | | | X X | | | * +-----+----+------------+----+----+--------------- ------+----+----+----------+----+-----+ * ^ ^ ^ * | | | * + + + * chipIconSize *动态* closeIconSize *

【讨论】:

  • 从那以后可能会改变吗?
【解决方案2】:

无法为 Chip 设置背景,您可以为其设置圆角或颜色。你也可以给边框颜色。

根据documentation

支持 Chip 的所有属性。不要使用 安卓:背景属性。它将被忽略,因为芯片管理 它自己的背景Drawable。也不要使用 android:drawableStart 和 android:drawableEnd 属性。

因此,如果您正在寻找具有不同边框颜色的边角或芯片,我建议您尝试一下,

    Chip chip = new Chip(Activity.this);
    chip.setText("Holiday");
    chip.setCloseIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.close_chip, null));
    chip.setCloseIconTint(ColorStateList.valueOf(Color.parseColor("#aa99bc")));
    chip.setPadding(5, 5, 5, 5);  
    chip.setCloseIconVisible(true);
    chip.setTextAppearanceResource(R.style.ChipTextStyle);
    chip.setChipStrokeColorResource(R.color.chip_border_color);
    chip.setChipStrokeWidth(1);
    chip.setChipCornerRadius(30);                                          
    chip.setChipBackgroundColorResource(R.color.chip_background);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 2019-04-22
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多