簡體   English   中英

Android Button可繪制問題

[英]Android Button drawable issue

我正在嘗試實現與操作欄中的圖標類似的按鈕,即,透明圖像會在單擊時更改背景顏色。

這些是我要滿足的條件:

  1. 點擊時背景顏色發生變化
  2. 中心包含一個小矩形
  3. 矩形可以通過程序更改顏色

我嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM