У меня есть два разных файла main.xml, один для портрета, другой для макета.У каждого есть этот код внутри RelativeLayout внутри Scrollview.
<LinearLayout
android:id="@+id/name_phone"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/acquire"
>
<EditText
android:id="@+id/name"
android:inputType="textPersonName"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="observer name"
android:nextFocusDown="@id/phone"
android:background="@android:drawable/editbox_background"
/>
<EditText
android:id="@+id/phone"
android:inputType="phone"
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="phone number"
android:nextFocusDown="@id/phone"
android:background="@android:drawable/editbox_background"
/>
</LinearLayout>
и т. Д.
Странность такая: насколько я знаю, вы не должны бытьвозможность ссылаться на вещи, которые еще не произошли в xml, поэтому android: nextFocusDown = "@ id / phone" должен произойти сбой, потому что телефон не был объявлен;и это то, что происходит в моем xml ландшафта, но не в портретной.В портретном режиме он работает отлично и проходит фокус через все четыре EditTexts без заминки.Если я помещу NextFocusDown в ландшафт, он не сможет скомпилироваться, сообщив: «Не найден ресурс, соответствующий данному имени (в« nextFocusDown »со значением« @ id / phone »)».
Решение илиобъяснение было бы здорово.Идея состоит в том, что у меня есть четыре текстовых поля в двух разных LinearLayouts, и какой бы ни один из них был первым, я передам его в EditText под ним, пропуская остальные.Я хочу, чтобы это работало так же, как у меня в портретной раскладке, когда пользователь нажимает следующее по имени, фокус переходит на телефон, когда он нажимает следующий, когда он переходит к электронной почте и т. Д. Мне также любопытно, почему это так.разрешив эту работу в портретной, а не в пейзаже.