gpt4 book ai didi

android - setSupportBackgroundTintList 状态不工作

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:37 25 4
gpt4 key购买 nike

我创建了一个扩展 AppCompat 按钮的 MyButton 类。在我的讲师中,我执行了这段代码:

    int[][] states = new int[][]{
new int[]{android.R.attr.state_enabled}, // enabled
new int[]{android.R.attr.state_pressed} // pressed
};

int[] colors = new int[]{
ContextCompat.getColor(context, R.color.tint),
ContextCompat.getColor(context, R.color.primary),
};

setSupportBackgroundTintList(new ColorStateList(states, colors));

不幸的是,这些状态不起作用。该按钮仅显示启用的颜色。我正在使用最新的 appcompat 库,也尝试过旧的

compile 'com.android.support:appcompat-v7:23.1.1'  //also tried 23.0.1
compile 'com.android.support:design:23.1.1' //also tried 23.0.1

我做错了什么?

最佳答案

状态按照定义的顺序进行匹配。所以,android.R.attr.state_enabled将匹配之前 android.R.attr.state_pressed .

由于启用了按钮,第一个正匹配项将针对 android.R.attr.state_enabled和颜色ContextCompat.getColor(context, R.color.tint)将被选中。由于已找到正匹配项,是否按下按钮并不重要

解决这个问题的最快方法是放置 android.R.attr.state_pressed之前android.R.attr.state_enabled .状态匹配将如下进行:

  • 按钮当前被按下 --> 状态 android.R.attr.state_pressed将进行检查并找到正匹配项 --> 颜色 ContextCompat.getColor(context, R.color.primary)将被使用。

  • 按钮当前按下 --> 状态 android.R.attr.state_pressed将被检查并且检查将失败 --> state android.R.attr.state_enabled将进行检查并找到正匹配项 --> 颜色 ContextCompat.getColor(context, R.color.tint)将被使用。

这应该有效:

int[][] states = new int[][]{
new int[]{android.R.attr.state_pressed}, // pressed
new int[]{android.R.attr.state_enabled} // enabled
};

int[] colors = new int[]{
ContextCompat.getColor(context, R.color.primary),
ContextCompat.getColor(context, R.color.tint)
};

setSupportBackgroundTintList(new ColorStateList(states, colors));

关于android - setSupportBackgroundTintList 状态不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34040836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com