0

基本上是标题所说的:
我有一个视图,我已经设置了背景图像(通过 XML 中的 android:background 属性),当用户按下视图时我想覆盖另一个图像
我知道你可以按下视图时使用 XML 选择器更改背景图像,但是否可以覆盖图像?
还是我只需要两张图片——一张是普通的,然后一张是添加了叠加层的?

提前致谢 :)

4

3 回答 3

3

感谢Chaosit,我想出了这个解决方案:
在 res/xml 中创建一个选择器文件,例如 selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/image_with_overlay" android:state_pressed="true" />
    <item android:drawable="@drawable/image" />
</selector>

然后在 res/drawable 中创建一个图层列表,例如 image_with_overlay.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/image" />
    <item android:drawable="@drawable/overlay_image" />
</layer-list>

然后在View你想拥有这个属性的地方,你只需使用android:background="@xml/selector"

然后你就完成了:-)

于 2013-09-05T19:12:40.443 回答
1

您可以只使用 ImageView 作为背景图像,并将 android:tint 属性设置为带有 alpha 过滤器的颜色。

<ImageView
    android:scaleType="fitXY"
    android:tint="#8c000000"
    android:src="mipmap/background.png"/>
于 2016-11-28T19:00:11.240 回答
0
// xml 
 <ImageView
    android:id="@+id/img"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:layout_gravity="center"
    android:adjustViewBounds="true"
    android:background="@drawable/ijoomer_btn_hover"
    android:padding="5dp"
    android:scaleType="fitXY" />

//  Activity 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
            setContentView("xml");
    img = (ImageView) findViewById(R.id.img);
    img.setImageDrawable(null);
}

   img.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if(img.getDrawable()!=null){
                img.setImageDrawable(null);
            }else{
                img.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher));
            }
        }
    });
于 2013-09-05T11:27:30.033 回答