J'ai vu beaucoup de sujets sur la façon de changer la couleur du texte de spinner, mais je ne comprenais pas comment l'utiliser.
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" />
Que dois-je réellement faire dans le code Java?
Ici, vous devez définir votre spinner_item.xml dans votre adaptateur RAID. Ajoutez ce morceau de code dans votre fichier .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..
Une réponse complète pour moi serait quelque chose comme:
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);
}
}
et dans res/layout ajouter un nouveau fichier xml:
(dans 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" />
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" />
C'est la méthode la plus simple que j'ai exécutée pour le texte de spinner. Je sais que c'est tard, mais ça va aider quelqu'un.
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) {
}
});
S'appuyant sur la réponse noobProgrammer, singleLine étant obsolète, une version mise à jour rapidement du fichier spinner_item.xml pour ceux qui recherchent une réponse à cette question.
<?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>
J'ai procédé comme suit: J'ai utilisé les méthodes getDropDownView()
et getView()
.
Utilisez getDropDownView()
pour Spinner
ouvert.
@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;
}
Et utilisez getView()
pour __ fermé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;
}
À partir de l'API de niveau 16 et supérieur, vous pouvez utiliser le code suivant pour modifier l'icône de liste déroulante dans spinner. Allez dans onItemSelected dans setonItemSelectedListener et modifiez le dessin de textview sélectionné comme ceci.
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) {
}
});
espérons que cela aidera quelqu'un.
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)
{
}
});