防止安卓竖屏模式下滚动

4

我有一个使用线性布局和权重的xml文件,以在屏幕上平均分配一些按钮等空间。当我将屏幕旋转到横向模式时,所有按钮都会被压缩。请问有人知道如何使按钮在纵向时占据相等的空间,不可滚动,在横向时整个屏幕可滚动。目前我没有使用任何ScrollView,布局看起来很好,表格和按钮占用了正确的空间,但是当我将屏幕旋转到横向时,一切都被压缩了。我尝试将Linear Layout包含在ScrollView中,但这导致Linear Layout移出屏幕,因此在纵向模式下,我必须滚动才能查看整个内容。这是我的xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:id="@+id/linear"
    android:orientation="vertical"
    android:background="#bf000000"
    tools:context=".MainActivity"
    android:layout_above="@+id/imageView">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txtReceive1"
        android:visibility="gone"/>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/table"
        android:background="#fff3f3f2"
        android:stretchColumns="*"
        android:shrinkColumns="*"
        >
        <TableRow>

            <TextView
                android:text="CH"
                android:gravity="center"

                android:padding="8dip"
                android:layout_width="wrap_content" />
            <TextView
                android:text="kWh"
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content" />
            <TextView
                android:text="Load"
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content" />
            <TextView
                android:text="Date"
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content" />
        </TableRow>
        <TableRow >
            <TextView
                android:padding="8dip" android:layout_width="wrap_content"
                android:gravity="center"
                android:id="@+id/t11"
                android:text="1" />
            <TextView
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t12" />
            <TextView
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t13" />
            <TextView
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t14" />
        </TableRow>

        <TableRow>
            <TextView
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t21"
                android:text="2" />
            <TextView
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t22" />
            <TextView
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t23" />
            <TextView
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t24" />
        </TableRow>
        <TableRow>
            <TextView

                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t31"
                android:text="3" />
            <TextView

                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t32" />
            <TextView

                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content" />
            <TextView

                android:gravity="center"
                android:padding="8dip"
                android:layout_width="wrap_content"
                android:id="@+id/t34" />
        </TableRow> <TableRow>
        <TextView

            android:gravity="center"
            android:padding="8dip" android:layout_width="wrap_content"
            android:id="@+id/t41"
            android:text="4" />
        <TextView
            android:gravity="center"
            android:padding="8dip" android:layout_width="wrap_content"
            android:id="@+id/t42" />
        <TextView

            android:gravity="center"
            android:padding="8dip" android:layout_width="wrap_content"
            android:id="@+id/t43" />
        <TextView

            android:gravity="center"
            android:padding="8dip" android:layout_width="wrap_content"
            android:id="@+id/t44" />
    </TableRow>
        <TableRow >
            <TextView
                android:padding="8dip" android:layout_width="wrap_content"

                android:gravity="center"
                android:id="@+id/t51"
                android:text="5" />
            <TextView
                android:gravity="center"

                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t52" />
            <TextView
                android:gravity="center"

                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t53" />
            <TextView
                android:gravity="center"
                android:padding="8dip" android:layout_width="wrap_content"
                android:id="@+id/t54" />
        </TableRow>
    </TableLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ff8c00"
        android:padding="6dip"
        android:id="@+id/txtReceive"
        android:layout_below="@+id/table"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/lin2"
        android:visibility="visible"
        android:paddingTop="5dp"
        android:weightSum="2">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_weight="1"
            android:visibility="visible"
            android:weightSum="4"
            android:id="@+id/rel">


            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1">
                <Button
                    android:layout_height="fill_parent"
                    android:id="@+id/imageButton1"
                    android:layout_width="fill_parent"
                    android:background="@drawable/btn_01_small"
                    android:textColor="#ffa5ff45"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Channel"
                    android:textSize="22sp"
                    android:id="@+id/textView3"
                    android:layout_alignTop="@+id/imageButton1"
                    android:layout_centerHorizontal="true" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="0"
                    android:textColor="#ffa5ff45"
                    android:id="@+id/textView9"
                    android:textSize="22sp"
                    android:layout_alignBottom="@+id/imageButton1"
                    android:layout_centerHorizontal="true" />

            </RelativeLayout><RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1">
            <Button
                android:layout_height="match_parent"
                android:layout_width="fill_parent"
                android:id="@+id/imageButton2"
                android:background="@drawable/btn_02"
                android:textColor="#ffa5ff45"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="kWh"
                android:textSize="22sp"
                android:id="@+id/textView6"
                android:layout_alignTop="@+id/imageButton2"
                android:layout_centerHorizontal="true" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="000.0"
                android:textColor="#ffa5ff45"
                android:id="@+id/textView10"
                android:textSize="22sp"
                android:layout_alignBottom="@+id/imageButton2"
                android:layout_centerHorizontal="true" />
        </RelativeLayout><RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1">
            <Button
                android:layout_height="match_parent"
                android:layout_width="fill_parent"
                android:id="@+id/imageButton3"
                android:background="@drawable/btn_03"
                android:textColor="#ffa5ff45"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Load"
                android:id="@+id/textView7"
                android:textSize="22sp"
                android:layout_alignTop="@+id/imageButton3"
                android:layout_centerHorizontal="true" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="000"
                android:textColor="#ffa5ff45"
                android:id="@+id/textView11"
                android:textSize="22sp"
                android:layout_alignBottom="@+id/imageButton3"
                android:layout_centerHorizontal="true" />
        </RelativeLayout><RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1">
            <Button
                android:layout_height="match_parent"
                android:layout_width="fill_parent"
                android:id="@+id/imageButton4"
                android:background="@drawable/btn_04_small" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Days"
                android:id="@+id/textView8"
                android:textSize="22sp"
                android:layout_alignTop="@+id/imageButton4"
                android:layout_centerHorizontal="true" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="000"
                android:textColor="#ffa5ff45"
                android:id="@+id/textView12"
                android:textSize="22sp"
                android:layout_alignBottom="@+id/imageButton4"
                android:layout_centerHorizontal="true" />

        </RelativeLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:layout_weight="1"
            android:layout_alignParentRight="true"
            android:visibility="visible"
            android:weightSum="4"
            android:layout_below="@+id/txtReceive"
            android:id="@+id/rel2">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1">
                <Button
                    android:layout_height="fill_parent"
                    android:id="@+id/imageButton12"
                    android:layout_width="fill_parent"
                    android:background="@drawable/btn_01_small"
                    android:textColor="#ffa5ff45"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Auto ON"
                    android:id="@+id/textView32"
                    android:textSize="22sp"
                    android:layout_alignTop="@+id/imageButton12"
                    android:layout_centerHorizontal="true" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="00:00"
                    android:textColor="#ffa5ff45"
                    android:id="@+id/textView92"
                    android:textSize="22sp"
                    android:layout_alignBottom="@+id/imageButton12"
                    android:layout_centerHorizontal="true" />

            </RelativeLayout><RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1">
            <Button
                android:layout_height="match_parent"
                android:layout_width="fill_parent"
                android:id="@+id/imageButton22"
                android:background="@drawable/btn_04_small"
                android:textColor="#ffa5ff45"/>





            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Auto OFF"
                android:textSize="22sp"
                android:id="@+id/textView62"
                android:layout_alignTop="@+id/imageButton22"
                android:layout_centerHorizontal="true" />



            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="00:00"
                android:textColor="#ffa5ff45"
                android:id="@+id/textView102"
                android:textSize="22sp"
                android:layout_alignBottom="@+id/imageButton22"
                android:layout_centerHorizontal="true" />


        </RelativeLayout><RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1">
            <Button
                android:layout_height="match_parent"
                android:layout_width="fill_parent"
                android:id="@+id/imageButton31"
                android:layout_marginTop="7dp"
                android:layout_marginBottom="-14dp"
                android:background="@drawable/send_btn_01"
                android:textSize="22sp"
                android:text="SET TIME" />
        </RelativeLayout>

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1">
                <Button
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:scaleType="matrix"
                    android:layout_marginBottom="-7dp"
                    android:id="@+id/imageButton32"
                    android:padding="0dp"
                    android:background="@drawable/send_btn_01"
                    android:textSize="22sp"
                    android:text="RECHARGE" />
            </RelativeLayout>

        </LinearLayout>
    </LinearLayout>




</LinearLayout>

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/imageView"
    android:src="@drawable/base_irya_left1"
    android:background="#bf000000"
    android:adjustViewBounds="true"
    android:layout_alignParentBottom="true" />

<!-- </RelativeLayout> -->


1
最好的方法是使用两个xml文件,一个用于纵向显示,另一个用于横向显示。将纵向文件放在res/layout文件夹中,将横向文件放在res/layout-land文件夹中。 - Matter Cat
@ Matter Cat,谢谢你的建议,我会尝试实现。 - Jitin V P 94
@MatterCat非常感谢,我按照您的建议做了,它起作用了。我该如何将您的评论标记为正确答案?顺便说一下,现在我又遇到了另一个问题。http://stackoverflow.com/questions/31070889/scrollview-not-scrolling-and-application-restart-on-orientation-change - Jitin V P 94
将评论移到答案中,看起来有人已经回答了你的另一个问题。 - Matter Cat
2个回答

3

您是否考虑在Android中使用碎片(Fragments)。这里有一个教程。

如何通过Fragment支持不同的屏幕尺寸(请参见此处

可以在活动的布局文件中定义它包含碎片(静态定义),也可以在运行时修改活动的碎片(动态定义)。

为了根据实际可用空间在活动中显示不同的碎片,您可以:

对于平板电脑和手机设备,请使用一个活动显示两个碎片。在这种情况下,无论何时需要更改活动所显示的碎片,都可以在运行时更改。在这种情况下,您通常在布局中使用FrameLayout类的实例作为占位符,并在运行时将碎片添加到其中。

对于每个手机,在单独的活动中托管每个碎片。例如,当平板电脑UI在一个活动中使用两个碎片时,请在手机上使用相同的活动,但提供一个替代布局,该布局仅包括一个碎片。如果详细碎片存在,则主活动会告诉该碎片更新自身。如果详细碎片不可用,则主活动会启动详细活动。

选择哪个选项取决于使用情况,通常动态贡献更灵活,但实现起来有点困难。

使用Fragments会有很大的区别吗? - Jitin V P 94
@user3705704 我已经编辑了我的回答,希望能有所帮助。 - skarabel

2
创建两个xml文件,一个用于横屏,一个用于竖屏,这样可以解决问题。竖屏的xml文件应该放在res/layout文件夹中,而横屏的xml文件应该放在res/layout-land文件夹中。这两个文件的名称应该相同才能起作用。

这个注释太棒了,非常感谢! - Erika

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接