2016-04-28 12 views
0

Ich habe einen Spinner, der eine Liste von Wochen (1-> 52) plus eine zusätzliche Option "Alle Wochen" enthält. Wann immer ich eine Wochennummer wähle, z. B. "1", wird die Spinnerbreite auf die für die Anzeige von "1" erforderliche Größe reduziert. Dies führt zu Problemen, wenn Sie versuchen, "Alle Wochen" erneut auszuwählen, da die Dropdown-Breite für den Spinner zu klein ist, als dass die Option "Alle Wochen" angezeigt werden könnte. Dadurch wird oben ein leerer Eintrag angezeigt. Sie können jedoch weiterhin den leeren Eintrag auswählen, und der Spinner verhält sich dabei so, wie ich es erwarten würde (wobei die Breite für den Text "Alle Wochen" mindestens breit genug ist).Android Spinner Wechselbreite verursacht Drop-Down-Artikel nicht anzuzeigen

Gibt es einen Weg um dies? Ich bin auf das Attribut android:dropDownWidth gestoßen, das bei Einstellung auf 100dp dieses Problem verschwinden lässt. Wenn ich es auf wrap_content setze, zeigt es das gleiche Verhalten, wenn es kein Attribut gibt, und das ist, was ich ideal möchte. Ich habe auf API 23 (6.0) und 22 (5.1) getestet, beide haben das gleiche Problem.

Ich habe eine grundlegende neue Aktivität einrichten, die dieses Problem hat, und der relevante Spinner-Code ist:

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 

    Spinner spinner = (Spinner) findViewById(R.id.spinner); 
    ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(this, R.array.week_spinner_array, android.R.layout.simple_spinner_item); 
    arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(arrayAdapter); 
} 

Stil xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:padding="16dp" > 

<Spinner 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/spinner" /> 

</RelativeLayout> 

enter image description here

enter image description here

Antwort

0

Probiere bessere Spinner-Bibliothek für einen Android. In dieser Bibliothek müssen Sie das All Weeks-Tag nicht verwenden. Es hat auch coole Animationen.

BetterSpinner