1. 程式人生 > >AutoCompleteTextView修改下拉列表樣式去點選時背景

AutoCompleteTextView修改下拉列表樣式去點選時背景

AutoCompleteTextView是Android提供的一個輸入自動匹配文字輸入工具,使用這個控制元件可以讓開發人員快速的完成輸入的資訊匹配,例如匹配搜尋歷史和搜尋模糊匹配等等

然而這個控制元件在我們使用的的時候比較尷尬的地方是它的樣式實在不怎麼樣,所以當我們修改的時候會遇到很多麻煩,本文僅以筆者自己遇到的困難點解決給出意見,希望能給後來者少走一些彎路

首先了解一下AutoCompleteTextView其實是一個editview和popupwindow,再通過filter來進行過濾的組合控制元件,所以我們在寫它的adapter需要繼承baseadapter同時實現Filterable介面


當我們寫好的介面卡並除錯成功後會發現彈出的popupwindow會有一層黑色的陰影,那是應為popup的style時系統預設的主題,所以如果我們直接修改AutoCompleteTextView的background時只會改變editview的樣式,如果想要修改popup的效果需要給AutoCompleteTextView設定style,在style中修改popup的樣式就可以達到我們的目的了


然後設定給AutoCompleteTextView就可以了


但是當我們點選的時候會發現popup中的listview的預設背景沒有去掉,這裡我們就可以使用AutoCompleteTextView的android:dropDownSelector方法來設定來設定我們需要的顏色就可以了

注意:

如果我們給adapter設定的itemview時有背景的那麼會導致我們給popup設定的描邊被遮住,所以最好不要給item設定背景色

另附上AutoCompleteTextView給我們提供可以操作popup的方法,筆者在這裡建議大家在寫程式碼的時候最好能考慮的多控制元件的組合使用和樣式設定,這樣可以少走不少彎路,想清楚了再寫程式碼,負責就會跟筆者一樣忙了半天結果發現是幾句話就可以解決的事情

android:completionHint         下拉列表下面的說明性文字
android:completionThreshold        彈出下來列表的最小字元個數
android:dropDownAnchor                下拉列表的錨點或掛載點


android:dropDownHeight         下拉列表高度
android:dropDownWidth         下拉列表寬度
android:dropDownHorizontalOffset       下拉列表距離左邊的距離
android:dropDownSelector        下拉列表被選中的行的背景

在程式碼裡可以設定setDropDownBackgroundResource我們進行快速的設定