在Android中删除ImageButton的隐藏背景但保持onClick突出显示

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样式.

And*_*nko 5

在这种情况下,只有两个相关的属性 - backgroundsrc.如果你想对所有图像按钮使用相同的背景(颜色突出显示),你需要添加背景的一部分,从按钮到按钮的变化对你的图像设置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)