6
<android.support.design.chip.Chip
     style="@style/Widget.MaterialComponents.Chip.Choice"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_margin="4dp"
     android:checked="true"
     android:padding="4dp"
     android:textAppearance="?android:textAppearanceSmall"
     app:chipBackgroundColor="@color/selector"
     app:chipText="Test"
     app:chipIconEnabled="true"
     app:chipIconSize="20dp" />

在 XML 中没有如下属性:

chipTextColor

以编程方式 SpannableString 不起作用:

SpannableStringBuilder builder = new SpannableStringBuilder();
String numeric = getString(R.string.patient_list_order_date);
SpannableString whiteSpannable= new SpannableString(numeric);
whiteSpannable.setSpan(new ForegroundColorSpan(Color.WHITE), 0, numeric.length(), 0);
builder.append(whiteSpannable);
chip.setChipText(builder);
4

4 回答 4

15

我设法在 28.0.0-alpha3 中设置了文本颜色,如下所示:

chip.setChipText(text);
chip.setTextAppearanceResource(R.style.ChipTextStyle_Selected);

并使用以下参数创建样式:

<style name="ChipTextStyle_Selected">
    <item name="android:textSize">13sp</item>
    <item name="android:textColor">@color/white</item>
</style>
于 2018-07-24T08:48:14.397 回答
4

您可以简单地在 xml 中使用 android:textColor,例如:

    <com.google.android.material.chip.Chip
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@android:color/white"/>

或者以编程方式,您可以使用:

val chip = view.findViewById<Chip>(R.id.chip)
chip.setTextColor(Color.WHITE)
于 2018-08-20T13:16:55.950 回答
1

在支持库版本 28 中,您可以使用此代码将颜色设置为芯片中的文本

android:textColor="#FFFFFF"

这个代码用于在芯片中写入文本

android:text="example"
于 2018-11-20T12:54:41.483 回答
0

公共类 Chip 扩展 AppCompatCheckBox 实现 ChipDrawable.Delegate

Chips是表示属性、文本、实体或动作的紧凑元素。现在没有app:chipTextColor属性。

供参考

Material Design 颜色系统可用于创建反映您的品牌或风格的颜色主题。

阅读有关The color system.

笔记

你可以试试ForegroundColorSpan

演示

    SpannableString whiteSpannable= new SpannableString(numeric);
    int color = getResources().getColor(R.color.your_color_name);
    ForegroundColorSpan fcs  =new ForegroundColorSpan(color);
    whiteSpannable.setSpan(new 
    ForegroundColorSpan(Color.WHITE),0,numeric.length(), 0);
    builder.append(whiteSpannable);
    chip.setChipText(builder);
于 2018-07-17T08:40:25.270 回答