2013-08-19 246 views
13

我看到了有關如何更改微調的文本顏色許多話題,但我不能瞭解如何使用如何更改微調文本顏色

spinner_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="top" 
    android:singleLine="true" 
    android:textColor="@color/iphone_text" /> 

我該怎麼真正做到在Java代碼:? 任何回覆將被認爲是 請儘可能詳細地回答以獲取更多詳細信息

回答

10

這裏您必須在陣列適配器中設置spinner_item.xml。添加這段代碼在你的java文件

Spinner yourSpinner; 
ArrayAdapter<String> yourAdapter; 
yourSpinner= (Spinner) findViewById(R.id.yourSpinnerID); 
yourSpinner.setAdapter(yourAdapter); 
yourAdapter= new ArrayAdapter<String>(this, R.layout.spinner_item, value); 
//here value is your items in spinner.. 
0
Spinner spnCategory= (Spinner)findViewById(R.id.my_spinner); 
.. 

ArrayAdapter<String> adptSpnCategory = new ArrayAdapter<String>this,R.layout.custom_spinner_item, alCategoryName); 
adptSpnCategory.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spnCategory.setAdapter(adptSpnCategory); 
spnCategory.setOnItemSelectedListener(new OnItemSelectedListener() 
{ 
public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) 
{ 
} 
public void onNothingSelected(AdapterView<?> arg0) 
{ 
} 
}); 
20

我一個完整的答案是這樣的:

public class ee extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ww); 
     addListenerOnSpinnerItemSelection(); 

    } 

    public void addListenerOnSpinnerItemSelection() { 
     ArrayList<String> array = new ArrayList<String>(); 
     array.add("item0"); 
     Spinner spinner1; 
     ArrayAdapter<String> mAdapter; 
     spinner1 = (Spinner) findViewById(R.id.spinner2); 
     mAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item, array); 
     spinner1.setAdapter(mAdapter); 
    } 

} 

和 RES /佈局添加新的XML文件:

(in spinner_item.xml)

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="top" 
    android:singleLine="true" 
    android:textColor="#00f0ff" /> 
+1

spinner1 in「spinner1 = new ArrayAdapter (this,R.layout.spinner_item,array);」應該是mAdapter。 – Daniel

4
Spinner spinner = (Spinner) findViewById(R.id.spinner); 

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View view, 
       int arg2, long arg3) { 

      ((TextView) arg0.getChildAt(0)).setTextColor(Color.RED); 
     } 
     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 

     } 
} 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       R.layout.list_row, list); 
     spinner.setAdapter(adapter); 

list_row.xml

<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:paddingBottom="5dp" 
android:paddingLeft="10dp" 
android:paddingTop="5dp" 
android:textColor="#000000" 
android:textSize="20sp" /> 
0

我這樣做如下:我已經使用了getDropDownView()getView()方法。

使用getDropDownView()打開Spinner

@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent) { 
    View view = convertView; 
    if (view == null) { 
     LayoutInflater vi = (LayoutInflater) activity 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = vi.inflate(R.layout.context_row_icon, null); 
    } 
    TextView mTitle = (TextView) view.findViewById(R.id.context_label); 
    ImageView flag = (ImageView) view.findViewById(R.id.context_icon);    

    mTitle.setText(values[position].getLabel(activity)); 

    if (!((LabelItem) getItem(position)).isEnabled()) { 
      mTitle.setTextColor(activity.getResources().getColor(
       R.color.context_item_disabled)); 
    } else { 
      mTitle.setTextColor(activity.getResources().getColor(
       R.color.context_item)); 
    } 
    return view; 
} 

而且使用getView()封閉式Spinner

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = convertView; 
    if (view == null) { 
     LayoutInflater vi = (LayoutInflater) activity 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = vi.inflate(R.layout.context_row_icon, null); 
    } 
    TextView mTitle = (TextView) view.findViewById(R.id.context_label); 
    ImageView flag = (ImageView) view.findViewById(R.id.context_icon); 

    mTitle.setText(values[position].getLabel(activity)); 

    mTitle.setTextColor(activity.getResources().getColor(
      R.color.context_item_disabled)); 

    return view; 
} 
1

這是我爲spinner的文本執行的最簡單的方法。我知道它晚了,但它會幫助一個人。

select_gender.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    // give the color which ever you want to give to spinner item in this line of code    
      ((TextView)parent.getChildAt(position)).setTextColor(Color.parseColor("#646b99")); 
      spinner_selected_gender=gender_list.get(position); 
      Toast.makeText(getApplicationContext(),"You selected"+spinner_selected_gender,Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 
0

從API級別16及以上,您可以使用下面的代碼來更改微調器中的下拉圖標。只需轉到setonItemSelectedListener中的ItemSelected並更改所選的textview的drawable即可。

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     // give the color which ever you want to give to spinner item in this line of code 

    //API Level 16 and above only. 
      ((TextView)parent.getChildAt(position)).setCompoundDrawablesRelativeWithIntrinsicBounds(null,null,ContextCompat.getDrawable(Activity.this,R.drawable.icon),null); 

//Basically itis changing the drawable of textview, we have change the textview left drawable. 
      } 
      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
      } 
     }); 

希望它能幫助別人。

0

建立在noobProgrammer答案上,因爲singleLine已被棄用,所以任何正在尋找答案的人都可以使用spinner_item.xml的快速更新版本。

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:maxLines="1"> 
</TextView>