[英]Android Button drawable issue
我正在尝试实现与操作栏中的图标类似的按钮,即,透明图像会在单击时更改背景颜色。
这些是我要满足的条件:
我尝试使用Drawable
表示矩形,然后将其设置为按钮的背景,但是它扩展到了按钮的边缘,因此单击时没有背景色发生变化(我可以使用drawable.setColorFilter ()和button.setBackground(drawable)更改其颜色)。 缩小按钮也会缩小触摸目标。
我使用也尝试StateListDrawable
包含两个矩形形状,一个背景和内矩形,等等state_pressed
矩形背景会改变颜色。 但是,前矩形再次拉伸并完全覆盖了背景矩形。
哪种方法可以达到我的条件? 谢谢。
有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);
}
}
});
尼克·巴彻(Nick Butcher)和罗曼·努里克(Roman Nurik)在Google IO 2013上关于Android UI设计的演讲有助于解决该问题。
XML属性style="?android:borderlessButtonStyle"
可以在ImageButton
(或什至只是Button
)上设置,以为其提供透明背景,并在触摸时以标准Holo蓝色点亮。 根据Roman Nurik的说法,此属性提供“全部免费”的标准样式。
我在layout.xml文件中创建了一个包含无边界按钮属性的ImageButton
,然后用Java创建了彩色的Drawable
,然后使用myImageButton.setImageDrawable(myColouredDrawable);
将其放入按钮中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"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.