Text in der Mitte des Drehfelds anzeigen, wenn aus der Dropdown-Liste ausgewählt wird
Ich möchte den Ansichtstext des Drehfelds zentrieren. Ich google, habe aber nichts gefunden. Weiß jemand davon? Jede Hilfe oder Anregung wird gebeten
Erstellen Sie einen Adapter für Ihren Spinner wie folgt,
ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, R.layout.my_spinner_style,array_of_values) {
public View getView(int position, View convertView,ViewGroup parent) {
View v = super.getView(position, convertView, parent);
((TextView) v).setTextSize(16);
return v;
}
public View getDropDownView(int position, View convertView,ViewGroup parent) {
View v = super.getDropDownView(position, convertView,parent);
((TextView) v).setGravity(Gravity.CENTER);
return v;
}
};
Nun dein Layout R.layout.my_spinner_style,
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+Android:id/text1"
style="?android:attr/spinnerItemStyle"
Android:singleLine="true"
Android:textColor="#ffffff"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:ellipsize="Marquee" />
Stellen Sie nun diesen Adapter auf Ihren Spinner ein,
spinner.setAdapter(adapter);
Sie müssen Ihr eigenes Layout für das Drehelement festlegen.
SpinnerAdapter adap = new ArrayAdapter<String>(this, R.layout.spinner_item, new String[]{"A", "B", "C"});
spriner.setAdapter(adap);
Wobei R.layout.spinner_item ein Layout mit Inhalt ist:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_height="fill_parent"
Android:layout_width="fill_parent"
Android:gravity="center"
Android:textColor="#000000"
Android:text="Sample Text"
Android:paddingBottom="5dp"
Android:paddingTop="5dp"></TextView>
Dies ist sehr einfach. Erstellen Sie einfach eine xml
-Datei mit dem Namen spinner_item.xml
mit Inhalt als
<TextView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:textColor="#111111"
Android:padding="10dp"
Android:textAlignment="center"
/>
Fügen Sie nun in Ihrer Klasse Java
trotz Hinzufügen der Standardansichtsressource von Android Ihre benutzerdefinierte Ansichtsressource als hinzu
ArrayAdapter<String> adapter= new ArrayAdapter<String>(context, R.layout.spinner_item, myList);
adapter.setDropDownViewResource(R.layout.spinner_item);
Die Zeile textAlignment erledigt den Trick.
Wenn Sie Textausrichtung auf Mitte einstellen, wird der Text in die Mitte gestellt.
Android: textAlignment = "center"
<Android.support.v7.widget.AppCompatSpinner
Android:id="@+id/spinner_areas"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_centerInParent="true"
Android:visibility="visible"
Android:gravity="center"
Android:textAlignment="center"/>
Dies funktioniert ohne Layoutänderungen
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
((TextView) adapterView.getChildAt(0)).setGravity(Gravity.CENTER);
}
});
Spät zum Spiel, aber ich wollte dies für zukünftige Benutzer hinzufügen, nur weil ich fand, dass es eine einfache Lösung für mein Problem ist. Dadurch konnte ich einfachen Text zentrieren, ohne ein benutzerdefiniertes Layout zu erstellen. So habe ich padding
verwendet
<Spinner
Android:id="@+id/example_spinner"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:paddingLeft="10dp"
Android:paddingRight="10dp"
Android:paddingTop="2dp"
Android:paddingBottom="2dp" />
Mit dieser Methode konnte ich meinen Text erfolgreich in meinem Drehfeld zentrieren. Dies funktioniert wahrscheinlich nur für einfache Fälle, aber Sie möchten wahrscheinlich trotzdem ein benutzerdefiniertes Layout für komplexere Fälle verwenden. Dies dient nur dazu, Ihre XML-Dateien klein zu halten und die Verwendung eines benutzerdefinierten Layouts zum Zentrieren eines einfachen Drehfelds zu vermeiden.
Fügen Sie diese Zeile in Spinner hinzu
Android:textAlignment="center"
Voila!