我有一个将src设置为图像的ImageView。现在,当我单击图像时,我希望该图像显示为灰色,暗示它被按下了。
我不想为所选状态分别设置图像,因为这听起来像是一种矫枉过正。我有很多按钮并为所有这些按钮制作重复图像,只有灰色叠加声音反直觉。
当按下按钮时,是否有一种方法可以在图像按钮上显示灰色覆盖。 ?
答案 0 :(得分:0)
使用StateListDrawable和LayerDrawable的组合
private void setSelector(View view) {
StateListDrawable drawable;
LayerDrawable layerDrawable;
Drawable background = view.getBackground();
ShapeDrawable selector = new ShapeDrawable(new RectShape());
selector.setIntrinsicHeight(v.getHeight());
selector.setIntrinsicWidth(v.getWidth());
selector.getPaint().setColor(<gray color>);
drawable = new StateListDrawable();
Drawable[] drawableArray = new Drawable[2];
drawableArray[0] = background;
drawableArray[1] = selector;
layerDrawable = new LayerDrawable(drawableArray);
int[] state1 = {};
int[] state2 = {-android.R.attr.state_pressed, -android.R.attr.state_focused};
drawable.addState(state2, background);
drawable.addState(state1, layerDrawable);
v.setBackgroundDrawable(drawable);
}