Android横向模式切断我的按钮在上面

zkure5ic  于 2022-11-20  发布在  Android
关注(0)|答案(4)|浏览(160)

我的应用程序出现了问题。我最近添加了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>
gg0vcinb

gg0vcinb1#

删除linearlayout上的android:layout_gravity="center",当您将其更改为横向模式时,滚动视图的高度大于您的屏幕大小,因此它将linearlayout居中显示在滚动视图中,尽管删除它可能不是解决方案,但这正是导致此问题的原因,
你可以考虑修改你的布局,它可能会更有意义,使用一个列表视图,能够成功地支持景观

plicqrtu

plicqrtu2#

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

af7jpaap

af7jpaap3#

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

我的解决方案:

我修复了这个问题,用LinearLayout Package 主长布局,将其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>
qc6wkl3g

qc6wkl3g4#

可以将android:layout_gravitiy="center"android:fillViewport="true"一起使用
示例:横向(Kotlin)xml中无截断的中心框:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:fillViewport="true"
  android:layout_gravity="center">

   <androidx.constraintlayout.widget.ConstraintLayout
       xmlns:app="http://schemas.android.com/apk/res-auto"
       xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
       android:layout_height="wrap_content">

       <RelativeLayout
           android:id="@+id/layout"
           android:layout_width="340dp"
           android:layout_height="443dp">

         <!-- .... box perfect center do something in it... -->

       </RelativeLayout>
   </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

相关问题