在纵向模式下防止滚动

时间:2015-06-25 07:32:14

标签: android android-layout scroll scrollview

我有一个xml,它使用线性布局和权重将屏幕上的空间平均分配给几个按钮等。当我将屏幕旋转到横向模式时,所有按钮都会被压缩。有人可以告诉我如何使按钮占用相同的空间,不可滚动,在纵向时,整个屏幕在横向时可滚动。目前我没有使用任何scrollview,并且布局看起来很好,桌子和按钮占用了适当的空间,但是当我将屏幕旋转到横向时,一切都被压缩了。我尝试将线性布局封闭在滚动视图中,但这会导致线性布局移出屏幕,因此在纵向模式下,我必须滚动才能看到整个内容。这是我的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> -->

2 个答案:

答案 0 :(得分:3)

您是否考虑在Android中使用Fragments? Here是一个教程。

如何使用片段支持不同的屏幕尺寸(请参阅here

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

根据实际可用空间显示活动中的不同片段:

使用一项活动,该活动会为平板电脑和手机设备显示两个片段。在这种情况下,在运行时更改活动显示的片段(如有必要)。在这种情况下,您通常将FrameLayout类的实例定义为布局中的占位符,并在运行时将片段添加到它们。

使用单独的活动来托管手机上的每个片段。例如,当平板电脑UI在活动中使用两个片段时,对手机使用相同的活动,但提供仅包含一个片段的替代布局。如果详细片段在那里,主要活动告诉片段它应该更新自己。如果详细信息片段不可用,则主要活动将启动详细活动。

选择哪个选项取决于用例,典型的动态贡献更灵活,有点难以实现。

答案 1 :(得分:1)

创建两个xmls,一个用于横向,一个用于纵向,将解决问题。纵向进入res/layout文件夹,横向进入res/layout-land。这两个应该有相同的名称,以便工作。