【问题标题】:Set border color for a chip in Android在 Android 中为芯片设置边框颜色
【发布时间】:2019-03-22 18:47:55
【问题描述】:

在我的 android 应用程序中,我有一个看起来像这样的简单芯片。

有什么办法可以设置边框的颜色让它变成这样吗?

更新: 我尝试添加形状,但在填充布局时出现异常

 <android.support.design.chip.Chip
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:background="@drawable/chip_with_border"
     android:text="my chip" />

drawable/chip_with_border.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF"/>
            <corners android:radius="30dp"/>
            <stroke android:width="1dp" android:color="#DDDDDD"/>
        </shape>
    </item>
</selector>

这会导致异常

android.view.InflateException: Binary XML file line #32: Error inflating class android.support.design.chip.Chip

【问题讨论】:

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


    【解决方案1】:

    我自己找到了答案。我需要将chipStrokeColorchipStrokeWidth 属性添加到我的chip

      <android.support.design.chip.Chip
          android:id="@+id/chip"
          style="@style/Widget.MaterialComponents.Chip.Filter"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          app:chipStrokeColor="#F0F"
          app:chipStrokeWidth="1dp"
          android:text="my chip"
          app:checkedIcon="@drawable/ic_done_green"
          app:chipBackgroundColor="#FFF" />
    

    【讨论】:

      【解决方案2】:

      通过Material Components LibraryChip 组件,您可以使用自定义样式:

      <com.google.android.material.chip.Chip
          style="@style/Colors_Widget.MaterialComponents.Chip.Choice"
          ..>
      

      或 xml 布局中的 app:chipStrokeColorapp:chipStrokeWidthapp:chipBackgroundColorandroid:textColor 属性:

      <com.google.android.material.chip.Chip
          app:chipBackgroundColor="@color/chip_background_color_selector"
          app:chipStrokeColor="@color/color_choice_chip_strokecolor_selector"
          app:chipStrokeWidth="1dp"
          android:textColor="@color/color_choice_chip_text_color"
          ..>
      

      采用这种风格:

        <style name="Colors_Widget.MaterialComponents.Chip.Choice" parent="Widget.MaterialComponents.Chip.Choice">
          <item name="chipBackgroundColor">@color/chip_background_color_selector</item>
          <item name="chipStrokeColor">@color/color_choice_chip_strokecolor_selector</item>
          <item name="chipStrokeWidth">1dp</item>
          <item name="android:textColor">@color/color_choice_chip_text_color</item>
          <item name="checkedIconVisible">true</item>
        </style>
      

      对于边框颜色,您可以使用选择器来管理不同的状态。
      比如:

      <selector xmlns:android="http://schemas.android.com/apk/res/android">
      
        <item android:color="@color/primaryLightColor" android:state_enabled="true" android:state_selected="true"/>
        <item android:color="@color/primaryLightColor" android:state_enabled="true" android:state_checked="true"/>
        <!-- 87% opacity. -->
        <item android:alpha="0.87" android:color="#C6CCCD" android:state_enabled="true"/>
        <!-- 38% of 87% opacity. -->
        <item android:alpha="0.33" android:color="#C6CCCD"/>
      
      </selector>
      

      【讨论】:

        【解决方案3】:

        1- 在drawable文件夹中创建shape.xml并将这段代码放入其中

        <?xml version="1.0" encoding="utf-8"?>
            <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#FFFFFF"/>
                    <corners android:radius="30dp"/>
                    <stroke android:width="1dp" android:color="#DDDDDD"/>
                </shape>
            </item>
        </selector>
        

        2- 然后在View 中设置android:background="@drawable/shape" 属性

        【讨论】:

        • 我试图这样做,但我遇到了异常Error inflating class android.support.design.chip.Chip
        • 他问的是芯片边框而不是背景
        猜你喜欢
        • 1970-01-01
        • 2013-09-16
        • 2015-11-29
        • 2015-12-11
        • 1970-01-01
        • 2013-06-03
        • 2015-11-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多