在使用XML选择器的背景图象顶部的Android覆盖物图象

时间:2013-09-05 11:09:09

标签: android android-view android-xml android-image android-selector

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

在此先感谢:)

3 个答案:

答案 0 :(得分: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"

然后你们都完成了: - )

答案 1 :(得分:1)

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

<ImageView
    android:scaleType="fitXY"
    android:tint="#8c000000"
    android:src="mipmap/background.png"/>

答案 2 :(得分: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));
            }
        }
    });