【问题标题】:How to set text color in android.support.design.chip.Chip?如何在 android.support.design.chip.Chip 中设置文本颜色?
【发布时间】:2018-12-24 21:09:57
【问题描述】:
<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);

【问题讨论】:

  • 解决了吗?
  • 不幸的是,采用的解决方案是一种解决方法。在 supportLibraryVersion 28.0.0-alpha3 中,属性app:chipText 不再可用,而是在经典android:text 中可用。现在具有特定foregroundColorSpan 的类SpannableString 有效
  • 好。明白了。

标签: java android colors android-chips


【解决方案1】:

我设法像这样在 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>

【讨论】:

  • 在自己尝试了一段时间后为我工作。这应该是公认的答案。谢谢!
  • 调试一天后问题得到解决,它在 HTC 设备 5.1.1 中运行非常感谢您
【解决方案2】:

您可以简单地在 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)

【讨论】:

    【解决方案3】:

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

    android:textColor="#FFFFFF"
    

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

    android:text="example"
    

    【讨论】:

      【解决方案4】:

      公共类 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);
      

      【讨论】:

        猜你喜欢
        • 2011-03-16
        • 1970-01-01
        • 2012-06-12
        • 2021-01-13
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 1970-01-01
        • 2018-12-04
        相关资源
        最近更新 更多