Android横向模式切断顶部的按钮

时间:2010-12-17 18:19:28

标签: android scrollview android-linearlayout

我的申请存在问题。我最近添加了ScrollView作为LinearLayout的Parent。将设备方向翻转为横向时,我的按钮会在顶部被切断。当我向下滚动时,我可以看到最后一个按钮就好了,在它的末尾有额外的“黑色空间”,只有顶部被切掉了。我环顾四周,我不确定为什么会这样。这是一些图片,所以你可以理解它的外观。

<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 个答案:

答案 0 :(得分:20)

删除线性布局上的android:layout_gravity="center",当您将其更改为横向模式时,滚动视图的高度大于您的屏幕大小,因此它将线性布局的中心放在ScrollView中,尽管删除它可能不是解决方案,这就是造成这种情况的原因,

你可以考虑修改你的布局,使用listview来成功支持景观可能更有意义

答案 1 :(得分:2)

我知道这是一个老线程,但我花了两天时间解决这个问题。虽然删除“layout_gravity”语句确实有助于中断问题,但是关于无法居中的评论也是如此。最终对我有用的东西,在我看来是一个黑客,是将滚动视图置于布局的中心,两个线性布局作为孩子级联。高度和宽度也必须在scrollview和linearlayouts上包装内容。这不是最好的解决方案,但我尝试了一切都没有成功,包括如果对象小于屏幕大小宽度,则使用setlayoutparams在代码中设置重力。我希望这可以帮助别人。

答案 2 :(得分:0)

@slim所说的提示(删除android:layout_gravity="center")确实有效,但没有中心对齐。

我的解决方案:

我修复了主要的长布局,其中LinearLayout的{​​{1}}设置为gravity,并且center保留为主要布局:

android:layout_gravity="center"