2015-05-27 88 views
2

我需要實現在按鈕單擊時更改應用程序主題的功能。 我已經成功改變了按鈕,edittext和textviews的樣式。但面臨Spinner風格改變的問題。以編程方式更改微調樣式

唯一成功的改變是背景顏色的變化:

spinnerRoutes.setBackgroundResource(R.drawable.dark_theme_spinner_background); 

改變標題行的唯一背景。我還需要更改textColor的行和項目微調行的背景

我已經嘗試了很多類似的stackoverflow解決方案,但他們都沒有工作。

甚至有可能以編程方式更改微調框的樣式嗎?

+0

你必須使用一些庫來定製spinners。 –

+0

單擊下面的:http://stackoverflow.com/questions/4361604/how-to-change-the-spinner-font-color 希望這是有幫助的。 – Galax

+0

@HasmukhBarochiya你能推薦任何? – AnZ

回答

3

如果你想定製微調器的下拉菜單,你需要重寫適配器類中的getView函數。而且如果u想控制在Spinnnerü需要這種spinner.onItemSelectedListener(顯示的文本),並修改文本視圖中的回調方法

示例代碼定製微調下拉菜單:

 @Override 
     public View getDropDownView (int position, View convertView, ViewGroup parent) { 

      /**The Adapter's view to be supplied for the spinner when constructing a spinner. */ 
      View view = super.getView(position, convertView, parent); 
      TextView listView = (TextView) view.findViewById(android.R.id.text1); 

      listView .setBackgroundColor(Color.parseColor(fontBack_BgnColor)); 

      listView .setHeight((int) heightPixels); 
      listView .setGravity(Gravity.CENTER); 
      listView .setTextSize(TypedValue.COMPLEX_UNIT_PX, 20); 
      listView .setTextColor(Color.parseColor(fontColor)); 
      listView .setText(super.getItem(position)); 
      return view; 
     } 

定製微調文本(即在旋轉的頂部顯示的文本):

@Override 
      public void onItemSelected(AdapterView<?> parent, View view, 
        int position, long id) { 

       ((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_PX, 25); 
       ((TextView) view).setTextColor(Color.parseColor(spinnerTextColor)); 

      } 
+0

你看,我已經在創建時就像那樣定製它。想象它的白色。現在我想改變它的顏色爲黑色。但是如何? – AnZ

+0

我應該想象爲白色,指定視圖(微調框背景或下拉菜單背景)。 – DJphy

2

其他的人是正確的,當涉及到完全定製的微調中的項目。 但是,如果你需要改變的唯一東西是項目中文本的樣式(意思是你還想要一個文本視圖,但有不同的字體,顏色和引力),那麼你只需要傳遞一個自定義項目佈局的適配器:

這是您的適配器看起來應該像:

spinner.setAdapter(new ArrayAdapter<String>(getActivity(), R.layout.custom_item, data) 

其中custom_item是您創建如下一個xml佈局文件:

<?xml version="1.0" encoding="utf-8"?> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@android:id/text1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceListItemSmall" 
     android:gravity="center" 
     android:textColor="@android:color/red" 
     android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
     android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" 
     android:minHeight="?android:attr/listPreferredItemHeightSmall" /> 

只需確保文本視圖是一個並只在該XML中查看,並且它的ID如上所述,所以默認適配器可以識別它。

希望有幫助。

相關問題