工具栏标题在设备上旋转时更改为在 EditText 中输入的文本?
Toolbar title changes on rotation on device to entered text in an EditText?
我的 Toolbar
正下方有一个 editText
。但是当我的设备旋转时,工具栏的标题(由 XML 设置)更改为 editText
的当前文本。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/newOccasion"
android:textColor="#FFFFFF"
android:textSize="18sp" />
</android.support.v7.widget.Toolbar>
<EditText
android:id="@+id/titleET"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:drawableStart="@drawable/ic_title"
android:hint="@string/titleET"
android:maxLines="1"
android:nextFocusLeft="@+id/titleET"
android:nextFocusUp="@+id/titleET"
android:paddingEnd="5dp"
android:paddingStart="5dp"
android:textSize="17sp"
android:theme="@style/inputColors"
android:lines="1"
android:maxLength="35"/>
完整 XML 此处: http://pastebin.com/JBeAkVqY
只需在 activity 中重写这些方法:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
//do nothing
}
效果很好。这些会将您以前的文本恢复到您执行旋转设备等操作时的状态。
我的 Toolbar
正下方有一个 editText
。但是当我的设备旋转时,工具栏的标题(由 XML 设置)更改为 editText
的当前文本。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/newOccasion"
android:textColor="#FFFFFF"
android:textSize="18sp" />
</android.support.v7.widget.Toolbar>
<EditText
android:id="@+id/titleET"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:drawableStart="@drawable/ic_title"
android:hint="@string/titleET"
android:maxLines="1"
android:nextFocusLeft="@+id/titleET"
android:nextFocusUp="@+id/titleET"
android:paddingEnd="5dp"
android:paddingStart="5dp"
android:textSize="17sp"
android:theme="@style/inputColors"
android:lines="1"
android:maxLength="35"/>
完整 XML 此处: http://pastebin.com/JBeAkVqY
只需在 activity 中重写这些方法:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
//do nothing
}
效果很好。这些会将您以前的文本恢复到您执行旋转设备等操作时的状态。