【问题标题】:Can't change com.google.android.material.chip.Chip change press color无法更改 com.google.android.material.chip.Chip 更改按颜色
【发布时间】:2019-05-08 11:36:23
【问题描述】:

我以编程方式芯片(材料组件),使用setChipBackgroundColor 更改芯片状态按下颜色但它有两个按下颜色效果,我想删除默认按下灰色

  1. 我的自定义印刷机 (#daecff)
  2. 默认按下颜色(灰色)

谢谢

https://i.imgur.com/5z94oUA.jpg

Chip chip = new Chip(context);
chip.setText(name);
chip.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
chip.setTextColor(ContextCompat.getColor(context, R.color.chip_color));
chip.setOnClickListener(onClickListener);
chip.setChipStrokeColorResource(R.color.chip_color);
chip.setChipStrokeWidth(5);
chip.setChipBackgroundColor(
    ContextCompat.getColorStateList(context, R.color.bg_chip)
);
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true" android:color="#daecff"/>
    <item android:color="@color/white"/>

</selector>

【问题讨论】:

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


    【解决方案1】:

    你必须使用 setRippleColor 方法:

    chip.setRippleColor(ContextCompat.getColorStateList(this,R.color.my_selector));
    

    类似:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">    
      <item android:alpha="@dimen/mtrl_low_ripple_pressed_alpha" android:color="?attr/colorPrimary" android:state_pressed="true"/>
      <item android:alpha="@dimen/mtrl_low_ripple_focused_alpha" android:color="?attr/colorOnSurface" android:state_focused="true" android:state_hovered="true"/>
      <item android:alpha="@dimen/mtrl_low_ripple_focused_alpha" android:color="?attr/colorOnSurface" android:state_focused="true"/>
      <item android:alpha="@dimen/mtrl_low_ripple_hovered_alpha" android:color="?attr/colorOnSurface" android:state_hovered="true"/>
      <item android:alpha="@dimen/mtrl_low_ripple_default_alpha" android:color="?attr/colorOnSurface"/>
    </selector>
    

    您还必须检查 setChipBackgroundColor 方法中使用的选择器,尤其是用于selected 状态的颜色:

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
      <!-- 24% opacity -->
      <item android:alpha="0.24" android:color="@color/custom" android:state_enabled="true" android:state_selected="true"/>
      ....
    </selector>
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2023-01-28
      • 2017-08-24
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 2014-07-11
      相关资源
      最近更新 更多