我已經嘗試使用一個與9patch和 selectableItemBackground由於Android:第二的繪製,不過 沒有工作
是,在層列表繪製屬性(或國家列表)一樣。不接受attr
值。您將看到一個Resource.NotFoundException
。查看LayerDrawable(或StateListDrawable)的源代碼解釋了原因:您提供的值被假定爲drawable的id。
但是,你可以檢索代碼屬性的主題和具體平臺抽拉:
// Attribute array
int[] attrs = new int[] { android.R.attr.selectableItemBackground };
TypedArray a = getTheme().obtainStyledAttributes(attrs);
// Drawable held by attribute 'selectableItemBackground' is at index '0'
Drawable d = a.getDrawable(0);
a.recycle();
現在,你可以創建一個LayerDrawable
:
LayerDrawable ld = new LayerDrawable(new Drawable[] {
// Nine Path Drawable
getResources().getDrawable(R.drawable.Your_Nine_Path),
// Drawable from attribute
d });
// Set the background to 'ld'
yourLayoutContainer.setBackground(ld);
你還需要集yourLayoutContainer's clickable
屬性:
android:clickable="true"
這看起來很有趣。會嘗試。 –
@JasonHu對不起,我沒有完全評論你的評論,正在打電話。如果你有問題,請繼續。 – Vikram
令人驚歎。奇蹟般有效。我最初以爲我必須爲選定的狀態選擇一個選擇器(9patch只在默認情況下,而LayerDrawable在選中時)。但它似乎從selectableItemBackground返回的drawable實際上是選擇器本身。謝謝。 –