2014-09-03 106 views
0

我有這個活動中我的應用程序,允許用戶從顏色選擇器中選擇顏色:更改主題顏色編程

我保存自定義顏色SharedPreferences。我現在想要實現的是將這些顏色設置爲ActionBar,TextViews,Buttons和其他小部件。

我已經搜索了很多,並且找不到編程方式來編輯主題的方法。

任何想法如何實現這一點,當然,瘋狂地設置背景顏色喜歡我的應用程序中的每個小部件?

編輯:

這就是爲什麼我想要做的事: 比方說,如果用戶不喜歡默認的應用主題的顏色(橙色動作條,橙頭的設置,黑色文本,橙色和灰色按鈕等),然後他會使用這個功能,讓他改變主題主色彩。例如,他只想將按鈕設置爲藍色,或將EditText設置爲黃色背景。我試圖創建一個功能,允許用戶編輯應用程序的主題。

這就是我試過的: 我發現this library改變了EndScroll Highlight的顏色。我想我可以使用這些想法來實現上述事情,然後爲我在我的應用中使用的小部件創建基類。

回答

0

是的,視圖背景顏色可以隨時更改。 如果視圖比使用應用梯度:

GradientDrawable sd = (GradientDrawable) (view.getCompoundDrawables())[0]; 
        sd.setColor(Color.red); 
        sd.invalidateSelf(); 

或爲LayerDrawable

LayerDrawable layer = (LayerDrawable)(view.getBackground()); 
int randomColor = Color.rgb(redRandom.nextInt(255),greenRandom.nextInt(255),blueRandom.nextInt(255));     
GradientDrawable sd = (GradientDrawable) (layer.findDrawableByLayerId(R.id.tab_package_shape)); 
sd.setStroke(0, randomColor); 
sd.setColor(randomColor); 
sd.invalidateSelf(); 

希望它會幫助你,並提供進一步的路要走。