我正在尝试实现类似于操作栏中图标的按钮,即在点击时更改背景颜色的透明图像。
这些是我想要满足的条件:
我尝试使用Drawable
来表示矩形,然后将其设置为按钮的背景,但它扩展到按钮的边缘,因此单击时没有要更改的背景颜色(I能够使用drawable.setColorFilter()和button.setBackground(drawable)来改变它的颜色。缩小按钮也缩小了触摸目标。
我还尝试使用包含两个矩形形状的StateListDrawable
,一个背景和一个内部矩形,因此在state_pressed
上,背景矩形会改变颜色。然而,前面的矩形再次拉伸并完全覆盖了背景矩形。
哪种方法可以达到我的条件?感谢。
答案 0 :(得分:0)
有2个图像用于按钮的状态并使用它:
boolean clicked = false
Button btn = (Buttton)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
if (clicked)
{
clicked = false;
btn.setBackgroundResource(R.drawable.button_image_on);
}
else
{
clicked = true;
btn.setBackgroundResource(R.drawable.button_image_off);
}
}
});
答案 1 :(得分:0)
This talk from Google IO 2013帮助解决了这个问题。
可以在style="?android:borderlessButtonStyle"
(或者甚至只是ImageButton
)上设置XML属性 Button
,使其具有透明背景,在标准的Holo蓝色触感。根据Roman Nurik的说法,这个属性提供了“全部免费”的标准样式。
我在layout.xml文件中创建了一个包含无边框按钮属性的ImageButton
,然后我用Java创建了我的彩色Drawable
并使用myImageButton.setImageDrawable(myColouredDrawable);
将其放在按钮内以适合所有我的三个条件。
编辑2013年7月:要使用Jake Wharton的ActionBarSherlock将ActionBar模式带到旧版Android,请使用 style="@style/Widget.Sherlock.ActionButton"
,或者使用ActionBarCompat支持库,使用 style="@style/Widget.AppCompat.ActionButton"
2017年5月更新:对于ImageViews(我认为它实际上是ImageViewCompat
)我在Jellybean上使用 android:background="?android:attr/selectableItemBackground"
。