我正在试图弄清楚如何为我的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;
}
问题是我显然根本没有使用状态字段。我怎么能为整数状态做这个?
答案 0 :(得分:1)
我认为这是不可取的,这就是为什么它不受支持。在我的例子中,我尝试了一个状态,该数据值使用idle = 0,walk = 1和run = 2作为按钮。我将其更改为三个独立的状态作为布尔值。在我的例子中,一个状态可能是真的,所以如果它们的组合是真的,则随机选择一个状态。我希望我能找到一种方法来做到这一点,但不允许有多个真实的状态,比如数值方法。