Режим Android Landscape отключает мои кнопки сверху
У меня проблема с моим приложением. Недавно я добавил ScrollView в качестве родителя LinearLayout. Когда меняют ориентацию устройства на Пейзаж, мои кнопки обрезаются сверху. Я вижу последнюю кнопку просто отлично с дополнительным "черным пространством" в конце ее, когда я прокручиваю вниз, только верх отсекает. Я огляделся, и я не знаю, почему это происходит. Вот несколько фотографий, чтобы вы могли понять, как это выглядит.
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:gravity="center_vertical">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center">
<Button
android:id="@+id/BeefButton"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_gravity="center"
android:background="@drawable/backgroundlayer"
android:drawableLeft="@drawable/beefbutton"
android:text="Beef"
android:textColor="#FFFFFF"
android:textSize="32px"
android:textColorHighlight="#FF6600"/>
<Button
android:id="@+id/PoultryButton"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_width="match_parent"
android:background="@drawable/backgroundlayer"
android:drawableLeft="@drawable/chickenbutton"
android:text="Poultry"
android:textColor="#FFFFFF"
android:textSize="32px"
android:textColorHighlight="#FF6600"/>
<Button
android:id="@+id/FishButton"
android:layout_height="wrap_content"
android:background="@drawable/backgroundlayer"
android:drawableLeft="@drawable/fishbutton"
android:text="Fish"
android:textColor="#FFFFFF"
android:textSize="32px"
android:textColorHighlight="#FF6600"
android:layout_gravity="center"
android:layout_width="match_parent"/>
<Button
android:id="@+id/PorkButton"
android:layout_height="wrap_content"
android:background="@drawable/backgroundlayer"
android:drawableLeft="@drawable/porkbutton"
android:text="Pork"
android:textColor="#FFFFFF"
android:textSize="32px"
android:textColorHighlight="#FF6600"
android:layout_gravity="center"
android:layout_width="match_parent"/>
<Button
android:id="@+id/VegetablesButton"
android:layout_height="wrap_content"
android:background="@drawable/backgroundlayer"
android:drawableLeft="@drawable/vegetablesbutton"
android:text="Vegetables"
android:textColor="#FFFFFF"
android:textSize="32px"
android:textColorHighlight="#FF6600"
android:layout_gravity="center"
android:layout_width="match_parent"/>
</LinearLayout>
</ScrollView>
Ответы
Ответ 1
удалите android:layout_gravity="center"
на вашем линейном прогоне, когда вы измените его в альбомном режиме, высота прокрутки будет больше, чем размер вашего экрана, поэтому его центрирование linearlayout в ScrollView, хотя удаление его может быть не решением, это это то, что вызывает это,
вы можете подумать о пересмотре своего макета, возможно, имеет смысл использовать список, чтобы иметь возможность успешно поддерживать ландшафт
Ответ 2
Я знаю, что это старый поток, но я потратил два дня на эту проблему. Хотя удаление выражения layout_gravity помогает решить проблему отсечения, также справедливо замечание о невозможности централизовать. В конечном счете то, что сработало для меня, которое, на мой взгляд, было взломом, состояло в том, чтобы иметь прокрутку в верхней части макета, а две линейные линии каскадировались как дети. Также высота и ширина должны были обертывать содержимое на scrollview и linearlayouts. Это не самое опрятное решение, но я пробовал все без успеха, включая настройку силы тяжести в коде с помощью setlayoutparams, если объекты были меньше ширины экрана. Я надеюсь, что это помогает кому-то.
Ответ 3
Подсказка (удаление android:layout_gravity="center"
), которую говорит @slim, работает, но не имеет центрального выравнивания.
Мое решение:
Я установил его, обернув основной длинный макет с помощью LinearLayout
с его gravity
, установленным на center
, и оставив android:layout_gravity="center"
для основного макета:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">
<!-- .... the main long layout ... -->
</LinearLayout>
</ScrollView>