15

私のアンドロイドアプリには、このようなシンプルなチップがあります。

ここに画像の説明を入力

このようにするために境界線の色を設定する方法はありますか?

ここに画像の説明を入力

更新:形状を追加しようとしましたが、レイアウトの膨張中に例外があります

 <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: バイナリ XML ファイルの行 #32: クラス android.support.design.chip.Chip の膨張エラー

4

3 に答える 3

12

Material Components Library とコンポーネントを使用すると、Chipカスタム スタイルを使用できます。

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

または 、app:chipStrokeColorapp:chipStrokeWidth、xml レイアウトの属性app:chipBackgroundColor:android: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>

ここに画像の説明を入力

于 2019-09-24T10:58:15.580 に答える
-1

1-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-次にandroid:background="@drawable/shape"属性を設定しますView

于 2019-03-22T19:00:42.653 に答える