Android 修改 Spinner 顏色

2021-09-27 02:31:47 字數 2263 閱讀 2066

本文僅對dropdown型進行了測試

首先如果為安卓9以上,請github安裝freereflection去除反射限制

廢話不多說,直接上**

這是設定已選擇的那個文字,就是比如你點開下拉列表選了乙個值,那個選定值顯示的地方

private

void

setviewresources

(spinneradapter spinneradapter,

int resources)

catch

(exception e)

}

然後在oncreateview

spinner = thisview.

findviewbyid

(r.id.your_spinner)

;setviewresources

(spinner.

getadapter()

, r.layout.spinner_selected_textview)

;

這是針對你在設計器裡已經把資料寫在arrays.xml裡的,你也可以

arrayadapter

arrayadapter =

newarrayadapter

<

>

(getactivity()

, r.layout.support_******_spinner_dropdown_item,

newstring

);setviewresources

(arrayadapter, r.layout.spinner_selected_textview)

; spinner.

setadapter

(arrayadapter)

;

然後在layout裡建立spinner_selected_textview.xml,隨你起什麼名字

xmlns:android

=""android:id

="@android:id/text1"

style

="?attr/spinnerdropdownitemstyle

" android:layout_width

="match_parent"

android:layout_height

="?attr/dropdownlistpreferreditemheight"

android:ellipsize

="marquee"

android:singleline

="true"

android:text

="test"

android:textalignment

="center"

android:textcolor

="#ececec"

/>

這樣就會造成adapter在創造dropdown item的時候使用的是預設的r.layout.support_******_spinner_dropdown_item,而創造顯示選定項的時候用的是r.layout.spinner_selected_textview。具體請看原始碼:

private

arrayadapter

(@nonnull context context,

@layoutres

int resource,

@idres

int textviewresourceid,

@nonnull list

objects,

boolean objsfromresources)

可見mresource = mdropdownresource = resource;,利用反射修改mresource,而mdropdownresource可以直接用api修改。

public

void

setdropdownviewresource

(@layoutres

int resource)

希望對你有幫助

Android修改系統時間

最近碰到修改系統時間的需求,折騰了一段時間,發現網上有一種方法是通過 命令的方式修改的。在這裡感謝那位老兄的方法。timemanager.setsystemtime public static void setsystemtime date date string str list.toarray ...

Android 定製化修改

android 禁止螢幕休眠和鎖屏的方法 android settings中provider的預設值和載入到資料庫流程 android系統預設語言改為中文 第一種方法 修改 build tools buildinfo.sh echo ro.product.locale.language zh ech...

Android 修改 hosts 檔案

android 修改 hosts 檔案 1,如果是編譯rom的話,可以直接修改原始檔,原始檔路徑 system core rootdir etc hosts 2,如果是root版本的裝置,adb pull system etc hosts e hosts 然後修改 hosts 並且 adb push...