2016-08-09 36 views
1

Ich habe eine Android-App und Layout ist in Quer- und Hochformat verfügbar.Redraw ActionBar in Android manuell

Bei einigen Aktivitäten gibt es eine Vielzahl von Eingaben und Auswahlen und ich möchte sie behalten, auch wenn ich das Telefon rotiere.

Ich habe dies die Activity in meinem Manifest:

android:configChanges="orientation|screenSize|keyboardHidden|keyboard" 

Eingänge gehalten werden, wenn sie von Hoch- auf Querformat drehen und alles sieht gut aus, mit Ausnahme der Größe/Textgröße meines ActionBar. Es ändert sich nicht. Wenn ich einen Activity im Querformat starte, ist die Textgröße kleiner, wird aber beim Zurückdrehen in den Hochformatmodus natürlich nicht größer.

Gibt es eine Möglichkeit, die ActionBar (wie in oder etwas) neu zu zeichnen oder einfach alle meine Eingaben zu behalten.

+0

können Sie die Symbolleiste verwenden und die volle Kontrolle über die Hände nehmen. –

Antwort

1

Verwenden configChanges in diesem Fall ist wirklich schlechte Praxis.

Ja, es behält Ihre Eingaben und Zustände bei einer Orientierungsänderung, aber Ihre Activity kann aus anderen Gründen neu erstellt werden, zum Beispiel wenn Ihre App im Hintergrund ist und das Betriebssystem entscheidet, es zu beenden, um Speicher und dann wieder du navigierst zurück zu ihr.

Wenn Sie Ihre App erneut öffnen, versucht das Betriebssystem, die Activity so wiederherzustellen, wie Sie sie verlassen haben, wird dies aber nicht tun (was höchstwahrscheinlich zu einem Absturz führen wird).

Anstatt das configChanges Attribut verwenden, sollten Sie Ihre Sachen in der onSaveInstanceState() speichern und aus dem Bundle in onCreate() wiederherzustellen.

Überprüfen Sie die developer's guide zu diesem Thema.