手动重绘 Android 中的 ActionBar

Redraw ActionBar in Android manually

我有一个 Android 应用程序,布局可以横向和纵向使用。

在某些活动中有很多输入和选择,即使我旋转 phone,我也想保留它们。

我将此添加到清单中的 Activity

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

从纵向旋转到横向时输入保持不变,一切看起来都不错,除了我的 ActionBar 的 size/textsize。它不会改变。如果我在横向模式下启动 Activity,文本会变小,但在旋转回纵向模式时当然不会变大。

有没有办法重绘 ActionBar(比如 onConfigurationChanged() 之类的)或轻松保留我所有的输入。

在这种情况下使用 configChanges 是非常糟糕的做法。

是的,它会在方向更改时保留您的输入和状态,但您的 Activity 可能会因为其他原因而重新创建,例如当您的应用程序处于后台并且 OS决定杀死它以回收内存,然后您导航回它。

当您重新打开您的应用程序时,OS 将尝试重新创建您离开时的 Activity,但会失败(很可能会导致崩溃)。

而不是使用 configChanges 属性,您应该将您的内容保存在 onSaveInstanceState() 中并从 onCreate() 中的 Bundle 恢复它。

查看有关此主题的 developer's guide