Android-ландшафтный режим отключает мои кнопки сверху - PullRequest
12 голосов
/ 17 декабря 2010

У меня проблема с моей заявкой.Недавно я добавил 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>

Ответы [ 3 ]

20 голосов
/ 17 декабря 2010

удалите android:layout_gravity="center" на линейной разметке, когда вы переключаете ее в альбомный режим, высота прокрутки больше размера вашего экрана, поэтому его центрирование линейной разметки в ScrollView, хотя удаление может не быть решением, это то, что вызывает это,

вы можете подумать о пересмотре макета, возможно, имеет смысл использовать просмотр списка, чтобы иметь возможность успешно поддерживать ландшафт

2 голосов
/ 06 октября 2011

Я знаю, что это старая ветка, но я потратил два дня на эту проблему. Хотя удаление оператора "layout_gravity" действительно помогает устранить проблему, комментарий о невозможности центрирования также верен. В конечном счете, для меня, который, на мой взгляд, является хаком, работало то, что скролл-просмотр располагался поверх макета по центру, а ДВА линейных макета располагались каскадно, как дети. Также высоту и ширину нужно было оборачивать содержимым на scrollview и linearlayouts. Это не самое удачное решение, но я попробовал все безуспешно, включая установку гравитации в коде с помощью setlayoutparams, если объекты были меньше ширины экрана. Я надеюсь, что это помогает кому-то.

0 голосов
/ 29 июля 2013

Намек (удаление 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>
...