2011-02-02 9 views
21

閉じたスピナーは実際にはViewであると私は思います。しかし、私はそれがどこかにテキストを表示するTextViewを持っていると思います。どのように私はそのTextViewへのアクセスを得ることができるので、私はテキストの色を変更することができますか?クローズドスピナーのテキストの色

EDIT:私はこれをプログラムで、XMLではなくオンザフライで変更する必要があります。

TextView v = (TextView) getView(mySpinner); 

v.setTextColor(..... 

このdoesntの仕事...

ありがとうございました!

array_typ=new String[5]; 
    array_typ[0]="Pressure"; 
    array_typ[1]="Level"; 

    array_typ[2]="Overage"; 
    array_typ[3]="Under"; 
    array_typ[4]="Taken"; 


    adaptertyp = new ArrayAdapter<Object>(this,R.layout.simple_spinner_item, array_typ); 
    typ.setAdapter(adaptertyp); 
+0

を働き、このように行いますか? – gnclmorais

答えて

9

私は、閉じたスピナーは、私が思うに、実際に表示されることを理解しています。

はい。具体的には、あなたが作成するようにあなたのSpinnerAdapterに何を言ったかです。

しかし、テキストを表示する場所にTextViewがあると思います。

これは、あなたが作成するためにあなたのSpinnerAdapterに何を伝えたかによって異なります。

テキストの色を変更できるように、そのTextViewにアクセスする方法を教えてください。

SpinnerAdapterに作成したことを介して、まず最初に適切な色を指定しないでください。色が変わる場合は、SpinnerAdaptergetView()をオーバーライドし、その時点で色を変更してください。ピンチで

、あなたは現在のViewが閉じSpinnerで示されている取得するgetSelectedView()を呼び出して試すことができますが、どのような変化をここで行うには、次のユーザ選択に除去することができる、とあれば、代替色は後で返すことがあります。先にViewがリサイクルされます。

+0

上記のスピナーをどのように作成するのかを追加しました。私は本当にAndroidとJavaのためにあなたの答えが聞こえるが、私は何を入力するか分からない答えがあるように聞こえます。テキストの色を変えることができるコードをいくつか表示できますか?ありがとう! –

+0

@マークウォースノップ: "私は上記のスピナーをどのように作成しているかを付け加えました。 - あなたの 'R.layout.simple_spinner_item'リソースを見て、そこの色を変更してください。 – CommonsWare

+0

プログラム的に変更する必要があります... –

33

テキストカラーを変更するには、res/layoutフォルダ(my_spinner_text.xmlなど)に新しいxmlファイルを作成します。新しいXMLファイルにテキストビューを追加し、あなたが望む方法を変更:

<TextView android:id="@+id/spinnerText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:textColor="#CCCCCC" 
    android:textSize="20dp" 
    xmlns:android="http://schemas.android.com/apk/res/android"/> 

新しいのTextViewを使用していますArrayAdapterを作成し、スピナーに設定します。

Spinner localSpinner = (Spinner)findViewById(R.id.mySpinner); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
       R.array.spinner_array, 
       R.layout.my_spinner_text); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    localSpinner.setAdapter(adapter); 
+0

私はアプリケーションの色をプログラムで変更できる必要があります... –

+1

私のために、xmlファイル ala

+4

あなたの参考ウェブサイトはオフラインのようです。 – rekire

1

は、あなたが持っているプログラム的にそれを行うにはアダプタクラスを拡張するために、何かのように:

ArrayAdapter<CharSequence> adapter = new ArrayAdater(this){ 
     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      View v = super.getView(position, convertView, parent);   
      // change the color here of your v 
      v. ... etc. etc   
     } 
    } 
+0

'setBackgroundColor()'が表示されますが、 'setTextColor()'はありません –

23

あなたは、テキストの色を変更することができますかsetOnItemSelectedListenerイベントでのTextViewにアクセスすることができます

閉じスピナーの変更TEXTCOLORについては
  spinnerObject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
       ((TextView)parentView.getChildAt(0)).setTextColor(Color.rgb(249, 249, 249)); 

      } 
+0

これは機能します!私がテキストの色を設定することができなかったため、Budiusが提案したことはありませんでした。 –

+0

これは効率が悪いようです。毎回色を設定します。 'ArrayAdapter'を拡張し、' getDropDownView() 'をオーバーライドすることで、スピナーのすべての項目の色を一度に設定できます。 –

0

私はあなたがそのXMLファイル内の色を定義することができませんでした、それは

@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; 
} 

@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; 
} 
関連する問題