web-dev-qa-db-fra.com

Couleur du texte d'une casserole fermée

Je comprends que le cône fermé est en fait une View, je pense. Mais je suppose qu'il y a une TextView quelque part pour montrer le texte. Comment avoir accès à cette TextView afin de pouvoir changer la couleur du texte? 

EDIT: Je dois changer cela par programme à la volée, pas dans le XML.

TextView v = (TextView) getView(mySpinner);

v.setTextColor(.....

Cela ne marche pas ... 

Je vous remercie!

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

Je comprends que le spinner fermé est en fait une vue, je pense.

Oui. Plus précisément, il s’agit de tout ce que vous avez dit à votre SpinnerAdapter de créer.

Mais je suppose qu'il y a un TextView là quelque part pour montrer le texte.

Cela dépend de ce que vous avez dit à votre SpinnerAdapter de créer.

Comment puis-je accéder à cette TextView afin de pouvoir changer la couleur du texte?

Idéalement, vous ne le faites pas - vous lui donnez la bonne couleur en premier lieu, via ce que vous avez dit à votre SpinnerAdapter de créer. Si la couleur varie, remplacez getView() dans votre SpinnerAdapter et changez la couleur à cet endroit.

Dans un pincement, vous pouvez essayer d'appeler getSelectedView() pour obtenir que la View actuelle soit montrée par la Spinner fermée, mais tout changement que vous apportez ici peut être éliminé lors de la prochaine sélection de l'utilisateur, et la couleur alternative peut revenir plus tard si la précédente View est recyclée .

9
CommonsWare

Pour modifier la couleur du texte, créez un nouveau fichier XML dans votre dossier res/layout (par exemple, my_spinner_text.xml). Ajoutez une vue texte au nouveau fichier XML et modifiez comme vous le souhaitez:

<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"/>

Créez un ArrayAdapter qui utilise le nouveau TextView et définissez-le sur votre disque:

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

Vous pouvez modifier la couleur du texte ou accéder à textview dans l’événement 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));   

            }
23
Rukmal Dias

pour le faire par programme, vous devez étendre la classe d'adaptateur, quelque chose comme:

    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

Pour changer le texte Couleur de Spinner fermé je dois faire de cette façon ça marche 

@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
Bhavinkumar Patel