【问题标题】:How to identify the state from View.getDrawableState()如何从 View.getDrawableState() 中识别状态
【发布时间】:2014-09-07 20:51:20
【问题描述】:

我正在尝试创建一个自定义按钮,它可以根据按钮状态(按下、启用等)更改其阴影属性(半径、距离等)

我终于接受了使用 XML 选择器无法做到这一点,因此我重写了 View.drawableStateChanged(),并尝试使用 View.getDrawableState() 找出当前状态。

但是,这个函数返回一个 int[],我无法弄清楚这个值的含义,以及如何从中提取各个状态。 文档是纯粹的废话:

public final int[] getDrawableState()

在 API 级别 1 中添加

返回代表可绘制状态的资源 ID 数组 视图的当前状态。

返回当前的可绘制状态

我也没有找到网上的例子,而与之相关的Android源代码非常神秘。

那么,例如,您如何从这个 int[] 确定按钮的当前“按下”状态是什么?还是“启用状态”?

【问题讨论】:

    标签: android android-view android-ui android-resources android-drawable


    【解决方案1】:

    我只是通过反复试验自己弄明白的。

    该列表包含“真”状态的资源标识符,不包含“假”状态的标识符。 以下代码满足了我的需求:

    // Get the relevant drawable state
    boolean statePressed = false, stateEnabled = false;
    int[] states = getDrawableState();
    for (int state : states)
    {
        if (state == android.R.attr.state_enabled)
            stateEnabled = true;
        else if (state == android.R.attr.state_pressed)
            statePressed = true;
    }
    

    【讨论】:

    • 你能分享任何支持它的文件吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2019-05-10
    • 1970-01-01
    • 2019-01-20
    相关资源
    最近更新 更多