自定义整数按钮状态(不是布尔值!)

时间:2013-09-05 19:55:25

标签: android button attributes state

我正在试图弄清楚如何为我的Android应用程序创建和使用自定义整数按钮状态。我发现this链接用于创建布尔值(只有两个可能的值)按钮状态,这似乎工作正常。但我现在有一个案例,我希望有多个状态的可能性,我想用整数指定它们。

这就是我现在正在做的事情:

import android.content.Context;
import android.util.Log;
import android.widget.ImageView;

public class MultiStateImageView extends ImageView{
private final static String LOG_TAG = MultiStateImageView.class.getSimpleName();

private static final int[] MULTI_STATE = {R.attr.multi_state};

private final int numStates;
private int state;

public MultiStateImageView(Context context, int numStates){
    super(context);
    this.numStates = numStates;
    state = 0;
}

public void setState(int state){
    if(state >= numStates){
        Log.e(LOG_TAG, "can't set a state higher than the number available!");
    }
    this.state = state;
    refreshDrawableState();
}

@Override
public int[] onCreateDrawableState(int extraSpace){
    final int[] drawableState = super.onCreateDrawableState(extraSpace + 2);
    mergeDrawableStates(drawableState, MULTI_STATE);
    return drawableState;
}

问题是我显然根本没有使用状态字段。我怎么能为整数状态做这个?

1 个答案:

答案 0 :(得分:1)

我认为这是不可取的,这就是为什么它不受支持。在我的例子中,我尝试了一个状态,该数据值使用idle = 0,walk = 1和run = 2作为按钮。我将其更改为三个独立的状态作为布尔值。在我的例子中,一个状态可能是真的,所以如果它们的组合是真的,则随机选择一个状态。我希望我能找到一种方法来做到这一点,但不允许有多个真实的状态,比如数值方法。