web-dev-qa-db-ja.com

閉じたスピナーのテキストの色

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

編集:XMLではなく、プログラムで即座に変更する必要があります。

TextView v = (TextView) getView(mySpinner);

v.setTextColor(.....

これは機能しません...

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

    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);
23
Mark Worsnop

閉じたスピナーが実際にビューであることを理解しています。

はい。具体的には、SpinnerAdapterに作成するように指示した内容です。

しかし、テキストを表示するためのTextViewがどこかにあると思います。

それは、SpinnerAdapterに作成するように指示した内容によって異なります。

そのtextViewにアクセスして、textcolorを変更するにはどうすればよいですか?

理想的には、そうしないでください。SpinnerAdapterに作成するように指示したものを使用して、最初に適切な色を付けます。色が異なる場合は、SpinnerAdaptergetView()をオーバーライドし、その時点で色を変更します。

ピンチでは、getSelectedView()を呼び出して、現在のViewが閉じたSpinnerで表示されるようにすることができますが、ここで行った変更は、ユーザーの次の変更で削除される可能性があります。選択すると、以前のViewがリサイクルされた場合、代替色が後で戻る可能性があります。

9
CommonsWare

テキストの色を変更するには、res/layoutフォルダーに新しいxmlファイル(my_spinner_text.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);
34
Vito

テキストの色を変更したり、setOnItemSelectedListenerイベントのテキストビューにアクセスしたりできます。

            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));   

            }
24
Rukmal Dias

プログラムでそれを行うには、次のようにアダプタクラスを拡張する必要があります。

    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        
        }
    }
1
Budius

これを試してみてください:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { ((TextView)parent.getChildAt(0)).setTextColor(getResources().getColor(R.color.colorPrimary));

0
Yeuni

閉じたスピナーのテキストの色を変更するには、このようにします

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