2012-12-23 88 views
2

我想將邊框添加到無邊界按鈕。但是,如果我使用父borderlessbutton創建自己的樣式並覆蓋背景標籤,則會鬆開狀態更改動畫等,因爲這也是由背景定義的。我也無法自己實現它們,因爲原生android drawables不可用,因此無法訪問。我不想複製drawables。 是否僅可能通過編程覆蓋ondraw,或者是否存在缺少的基於xml的解決方案? (順便說一句,這是一個元素週期表所以這不應涉及具有用於每個按鈕XML文件作爲有他們的約100) 感謝 斯蒂芬將樣式添加到android無邊界按鈕(android 4.0+)

+0

如果它是一個週期表,那麼也許你應該使用網格視圖。這支持了項目之間的界限。 –

+0

原始圖片可以通過SDK進行瀏覽。您需要一個具有正確結構的xml文件,Android會爲正確的狀態提取圖片。 – rekire

回答

1

的這大部分來自this article

有一個4個步驟在做這樣的事情:

  1. 創建一個包含狀態的XML文件。
  2. 每個狀態
  3. 創建一個XML文件(或背景)創建按鈕
  4. 的樣式按鈕添加到您的佈局,看看它是什麼樣子。

最困難的事情是第一步,所以我會在這裏展示一個。對於其他人,你可以訪問該網站或做你自己的事情。基本上,它看起來像這樣。基本上需要捕獲所有4個州。這應該保存在可繪製的文件夾中,並且這個名稱就是您的應用程序將用於繪圖名稱的名稱。

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_enabled="false" 
     android:drawable="@drawable/loc_for_button_disabled" /> 
    <item 
     android:state_pressed="true" 
     android:state_enabled="true" 
     android:drawable="@drawable/loc_for_button_pressed" /> 
    <item 
     android:state_focused="true" 
     android:state_enabled="true" 
     android:drawable="@drawable/loc_for_button_focused" /> 
    <item 
     android:state_enabled="true" 
     android:drawable="@drawable/loc_for_button_enabled" /> 
</selector> 
+0

好吧,看起來這是要走的路。謝謝! :-) – user1924915

0

簡單的方法將是一個單獨的佈局,例如內把您的按鈕一個LinearLayout並給這個佈局一個背景色和一個填充例如1DP。這會在按鈕周圍呈現「邊框」。請注意,這在佈局方面相當昂貴,所以當你有很多按鈕時不要使用這種方法。

正確的解決辦法是創建您的所有國家一個可繪製,並建立與您可繪製一個statelist繪製並指定該statelist繪製作爲按鈕的背景。其實這並沒有太多的工作,只是看看http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList