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