Подтвердить что ты не робот

Режим 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>
4b9b3361

Ответ 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>