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