use*_*156 3 android background onclick
我的应用程序中有一些ImageButtons,我删除了默认的灰色背景
android:background="@android:color/transparent" 要么 android:background="@null"
问题是,它还删除了onClick高亮背景(API8中的橙色和API16中的蓝色)
我在这里读了很多问答,人们都建议使用.而selector不是为每个按钮制作另一个图像,我只想要一个背景颜色突出显示.有没有一种简单的方法来实现这一目标?
解决方案:以编程方式
import android.view.View;
import android.view.View.OnTouchListener;
// ...
btn.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == (MotionEvent.ACTION_DOWN)) {
// set background highlight color
btn.setBackgroundResource(R.color.blue);
}
if(event.getAction() == (MotionEvent.ACTION_UP)) {
// restore transparent
btn.setBackgroundResource(
getResources().getColor(android.R.color.transparent));
}
return false;
}
});
它不是那么简单,但是做了工作并节省了我很多时间为每个按钮制作另一个图像,而我真的不需要花哨的onclick样式.
在这种情况下,只有两个相关的属性 - background和src.如果你想对所有图像按钮使用相同的背景(颜色突出显示),你需要添加背景的一部分,从按钮到按钮的变化对你的图像设置src,这不是太干净整洁(当然你如果你愿意,可以这样做).
所以我认为这里最好的是使用选择器作为背景,正如许多用户所建议的那样.
使用以下代码:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/holo_blue_light" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2818 次 |
| 最近记录: |