Ich habe viele Themen gesehen, wie man die Textfarbe des Spinners ändert, aber ich konnte nicht verstehen, wie man es benutzt
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" />
Was soll ich im Java-Code wirklich tun:? Alle Antworten werden bestätigt Bitte antworten Sie mit möglichst vielen Details
Hier müssen Sie Ihre spinner_item.xml in Ihrem Array-Adapter setzen. Fügen Sie diesen Code in Ihre .Java-Datei ein
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..
Eine vollständige Antwort für mich wäre so etwas:
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);
}
}
und in res/layout neue XML-Datei hinzufügen:
(in 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" />
Dies ist die einfachste Methode, die ich für den Spinner-Text ausgeführt habe. Ich weiß, es ist spät, aber es wird jemandem helfen.
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) {
}
});
Aufbauend auf der Antwort von noobProgrammer, da singleLine veraltet ist, eine schnell aktualisierte Version von spinner_item.xml für alle, die eine Antwort darauf suchen.
<?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>
Ich habe dies wie folgt gemacht: Ich habe die Methoden getDropDownView()
und getView()
verwendet.
Verwenden Sie getDropDownView()
für geöffnete Spinner
.
@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;
}
Und verwenden Sie getView()
für geschlossene 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;
}
Ab der API-Ebene 16 und höher können Sie das Dropdown-Symbol im Spinner mit folgendem Code ändern. Gehen Sie einfach zu onItemSelected in setonItemSelectedListener und ändern Sie die Zeichenansicht der so ausgewählten Textansicht.
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) {
}
});
hoffe es hilft jemandem.
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)
{
}
});