选择颜色imageview android

时间:2014-01-09 08:15:45

标签: android android-imageview

我有一个将src设置为图像的ImageView。现在,当我单击图像时,我希望该图像显示为灰色,暗示它被按下了。

我不想为所选状态分别设置图像,因为这听起来像是一种矫枉过正。我有很多按钮并为所有这些按钮制作重复图像,只有灰色叠加声音反直觉。

当按下按钮时,是否有一种方法可以在图像按钮上显示灰色覆盖。 ?

1 个答案:

答案 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);     
    }