У меня есть простая MainActivity, где ориентация меняется от портрета к пейзажу и обратно к портрету. На моем экране SecondActivity есть текстовое поле с кнопкой EditText для ввода пользователем. К сожалению, при изменении ориентации от портрета к пейзажу макет не меняется должным образом. Кажется, он не переносится в ландшафтный режим. Текстуры, фоновые цвета и панель инструментов файла макета не загружаются. Отображается только подсказка EditText, а фоновый цвет - белый. Я тестировал на Samsung Galaxy S3 и эмулятор Genymotion с таким же плохим результатом. Наконец, когда устройство или эмулятор повернуты назад к портрету, макет представления загружается правильно ... все отображается правильно, как на оригинальном портрете. Что мне здесь не хватает?Android: почему большая часть макета исчезает при изменении ориентации?
SecondActivity Java файл:
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cardviewinput);
EditText Java файл:
public class ListenerEditText extends EditText {
...
Layout XML файл:
...
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1"
android:background="#FF0000" >
<TextView
android:id="@+id/createSkycard"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:layout_marginTop="20dp"
android:gravity="center_horizontal"
android:text="Create a skycard"
android:textAppearance="?android:attr/textAppearanceMedium"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1"
android:background="#FF0000" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:text=" To Do item: "
android:textAppearance="?android:attr/textAppearanceMedium"/>
<com.example.jdw.secondscreen.ListenerEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/CEditText"
android:inputType="text|textCapSentences|textNoSuggestions"
android:textAppearance="?android:attr/textAppearanceMedium"
android:hint="Type a new item here"
android:textColor="#000000"
android:singleLine="true"
android:imeOptions="actionNext" >
<requestFocus />
</com.example.jdw.secondscreen.ListenerEditText>
...
Вы можете отключить это, как показано в этом сообщении: http://stackoverflow.com/questions/4336762/disabling-the-fullscreen-editing-view-for-soft-keyboard-input-in-landscape – joaortk
Я думаю, вы правильны, активность загружается курсором все еще в EditText, и я вижу только EditText с подсказкой. Однако я хочу повторно загрузить полный макет, даже если курсор все еще находится в EditText. Это произойдет, если пользователь начнет вводить текст, который будет отображаться на линии EditText, а затем пользователь решит изменить ориентацию, а затем закончить ввод текста в этой строке EditText. Мне интересно, если здесь код в EditText вызывает проблемы. Есть предположения? –
AJW
Я не уверен, получил ли я то, что вы хотите выполнить, но для меня у вас есть два варианта: заставить Edittext потерять фокус или попробовать решение, которое я опубликовал в предыдущем комментарии, показывая, как отключить полноэкранный edittext. – joaortk