我尝试创建一个自定义按钮,根据按钮状态(按下,启用等)更改其阴影属性(半径,距离等)
我终于接受了这不能使用XML选择器完成,因此我重写了View.drawableStateChanged(),并尝试使用View.getDrawableState()来计算当前状态。
但是,这个函数返回一个int [],我无法弄清楚这个值的含义,以及如何从中提取单个状态。 文档是纯粹的废话:
public final int [] getDrawableState()
在API级别1中添加
返回表示可绘制状态的资源ID数组 目前的观点状态。
返回当前可绘制状态
我也找不到在线示例,与此相关的Android源代码非常神秘。
那么,你如何从这个int []中弄清楚当前"压缩"例如,按钮的状态?或者"启用状态"?
答案 0 :(得分:7)
我只是通过反复试验来解决这个问题。
该列表包含" true"的资源标识符。状态,并且不包含" false"的标识符。状态。 以下代码满足了我的需求:
// 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;
}