[英]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.