我已经测试过this答案,但是它对我不起作用。
我通过以下方式创建stateListDrawable:
stateListDrawable=new StateListDrawable();
final int[] colors = {Color.parseColor(evento.getColor()),Color.parseColor(evento.getBgColor())};
final GradientDrawable gd = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);
gd.setCornerRadius(30f);
final GradientDrawable gd2 = new GradientDrawable(
GradientDrawable.Orientation.BOTTOM_TOP, colors);
gd2.setCornerRadius(30f);
stateListDrawable.addState(StateSet.WILD_CARD,gd);
//stateListDrawable.addState(new int[] {android.R.attr.state_enabled},gd);
stateListDrawable.addState(new int[] {android.R.attr.state_pressed},gd2);
我试图更改addState语句中的顺序,将按下状态置于启用和通配符之前,但是无论如何放置,都不会绘制按下状态。
按钮的添加方式如下:
final Button btn = new Button(this);
btn.setText(array.get(i));
btn.setTextSize(10);
btn.setTextColor(getColor(R.color.white));
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
goToModule(texto);
}
});
btn.setHeight(height);
btn.setWidth(width);
btn.setOnTouchListener(parentListener);
btn.post(new Runnable() {
@Override
public void run() {
btn.setCompoundDrawablesWithIntrinsicBounds(null,getDrawableForText(texto),null, null);
//btn.setCompoundDrawablePadding(50);
btn.setPadding(0,35,0,0);
//btn.setBackground(gd);
btn.setBackground(stateListDrawable);
btn.setLayoutParams(params);
}
});
row1.addView(btn);
如果我的按钮被按下,如何获得更改状态的信息?