Android中多个线性布局视图的滚动条

3

我在一个安卓应用中有一个弹出视图。在竖屏状态下,弹出页面显示正常,但是如果我将屏幕旋转到横屏状态,弹出页面的布局只显示部分内容。弹出页面中有一些按钮,但在横屏模式下无法看到这些按钮。我使用的弹出页面是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/popup_element"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#333333"
    android:gravity="center"
    android:orientation="vertical"
    tools:ignore="ButtonStyle" >

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/choose_emotion"
        android:textColor="@color/white"
        android:textSize="20sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/emo_sad"
            android:layout_width="83dp"
            android:layout_height="83dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:background="@drawable/sky_ring"
            android:text="@string/emo_sad"
            android:textColor="@color/white"
            android:textSize="12sp" />

        <Button
            android:id="@+id/emo_happy"
            android:layout_width="83dp"
            android:layout_height="83dp"
            android:background="@drawable/yellow_ring"
            android:text="@string/emo_happy"
            android:textColor="@color/white"
            android:textSize="12sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/emo_depressed"
            android:layout_width="83dp"
            android:layout_height="83dp"
            android:background="@drawable/blue_ring"
            android:text="@string/emo_depressed"
            android:textColor="@color/white"
            android:textSize="12sp" />

        <Button
            android:id="@+id/emo_question"
            android:layout_width="83dp"
            android:layout_height="83dp"
            android:layout_margin="8dp"
            android:background="@drawable/gray_ring_question"
            android:textColor="@color/white"
            android:textSize="12sp" />

        <Button
            android:id="@+id/emo_anxious"
            android:layout_width="83dp"
            android:layout_height="83dp"
            android:background="@drawable/orange_ring"
            android:text="@string/emo_anxious"
            android:textColor="@color/white"
            android:textSize="12sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/emo_neutral"
            android:layout_width="83dp"
            android:layout_height="83dp"
            android:background="@drawable/white_ring"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:text="@string/emo_neutral"
            android:textColor="@color/white"
            android:textSize="12sp" />

        <Button
            android:id="@+id/emo_angry"
            android:layout_width="83dp"
            android:layout_height="83dp"
            android:background="@drawable/red_ring"
            android:text="@string/emo_angry"
            android:textColor="@color/white"
            android:textSize="12sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_done_popup"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_marginBottom="20dp"
            android:layout_marginEnd="5dp"
            android:layout_marginRight="5dp"
            android:text="@string/done_btn"
            android:textColor="@color/white" />

        <Button
            android:id="@+id/btn_close_popup"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_marginBottom="20dp"
            android:text="@string/cancel_btn"
            android:textColor="@color/white" />

    </LinearLayout>

</LinearLayout>

如何在横屏或小屏幕上显示完整页面?任何帮助将不胜感激。先谢谢了。

3个回答

2

检查这个,我使用了你的XML(更改了你的背景):

  <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/popup_element"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#333333"
android:gravity="center"
android:orientation="vertical"
tools:ignore="ButtonStyle" >

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="choose_emotion"
            android:textColor="@color/white"
            android:textSize="20sp" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="15dp"
            android:gravity="center"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/emo_sad"
                android:layout_width="83dp"
                android:layout_height="83dp"
                android:layout_marginEnd="5dp"
                android:layout_marginRight="5dp"
                android:background="@drawable/ic_launcher"
                android:text="emo_sad"
                android:textColor="@color/white"
                android:textSize="12sp" />

            <Button
                android:id="@+id/emo_happy"
                android:layout_width="83dp"
                android:layout_height="83dp"
                android:background="@drawable/ic_launcher"
                android:text="emo_happy"
                android:textColor="@color/white"
                android:textSize="12sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/emo_depressed"
                android:layout_width="83dp"
                android:layout_height="83dp"
                android:background="@drawable/ic_launcher"
                android:text="emo_depressed"
                android:textColor="@color/white"
                android:textSize="12sp" />

            <Button
                android:id="@+id/emo_question"
                android:layout_width="83dp"
                android:layout_height="83dp"
                android:layout_margin="8dp"
                android:background="@drawable/ic_launcher"
                android:textColor="@color/white"
                android:textSize="12sp" />

            <Button
                android:id="@+id/emo_anxious"
                android:layout_width="83dp"
                android:layout_height="83dp"
                android:background="@drawable/ic_launcher"
                android:text="emo_anxious"
                android:textColor="@color/white"
                android:textSize="12sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/emo_neutral"
                android:layout_width="83dp"
                android:layout_height="83dp"
                android:layout_marginEnd="5dp"
                android:layout_marginRight="5dp"
                android:background="@drawable/ic_launcher"
                android:text="emo_neutral"
                android:textColor="@color/white"
                android:textSize="12sp" />

            <Button
                android:id="@+id/emo_angry"
                android:layout_width="83dp"
                android:layout_height="83dp"
                android:background="@drawable/ic_launcher"
                android:text="emo_angry"
                android:textColor="@color/white"
                android:textSize="12sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/btn_done_popup"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_marginBottom="20dp"
                android:layout_marginEnd="5dp"
                android:layout_marginRight="5dp"
                android:text="done_btn"
                android:textColor="@color/white" />

            <Button
                android:id="@+id/btn_close_popup"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_marginBottom="20dp"
                android:text="cancel_btn"
                android:textColor="@color/white" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>


2

你可以试着这样做,因为你知道ScrollView只能有一个子视图,所以把ScrollView作为父布局,然后一个子视图将是线性布局,那么它就可以工作了。试试这样:

<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">

<LinearLayout
    android:id="@+id/popup_element"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#333333"
    android:gravity="center"
    android:orientation="vertical"
    tools:ignore="ButtonStyle" >

<TextView
    android:id="@+id/textView6"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/choose_emotion"
    android:textColor="@color/white"
    android:textSize="20sp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="15dp"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/emo_sad"
        android:layout_width="83dp"
        android:layout_height="83dp"
        android:layout_marginEnd="5dp"
        android:layout_marginRight="5dp"
        android:background="@drawable/sky_ring"
        android:text="@string/emo_sad"
        android:textColor="@color/white"
        android:textSize="12sp" />

    <Button
        android:id="@+id/emo_happy"
        android:layout_width="83dp"
        android:layout_height="83dp"
        android:background="@drawable/yellow_ring"
        android:text="@string/emo_happy"
        android:textColor="@color/white"
        android:textSize="12sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="5dp"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/emo_depressed"
        android:layout_width="83dp"
        android:layout_height="83dp"
        android:background="@drawable/blue_ring"
        android:text="@string/emo_depressed"
        android:textColor="@color/white"
        android:textSize="12sp" />

    <Button
        android:id="@+id/emo_question"
        android:layout_width="83dp"
        android:layout_height="83dp"
        android:layout_margin="8dp"
        android:background="@drawable/gray_ring_question"
        android:textColor="@color/white"
        android:textSize="12sp" />

    <Button
        android:id="@+id/emo_anxious"
        android:layout_width="83dp"
        android:layout_height="83dp"
        android:background="@drawable/orange_ring"
        android:text="@string/emo_anxious"
        android:textColor="@color/white"
        android:textSize="12sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/emo_neutral"
        android:layout_width="83dp"
        android:layout_height="83dp"
        android:background="@drawable/white_ring"
        android:layout_marginEnd="5dp"
        android:layout_marginRight="5dp"
        android:text="@string/emo_neutral"
        android:textColor="@color/white"
        android:textSize="12sp" />

    <Button
        android:id="@+id/emo_angry"
        android:layout_width="83dp"
        android:layout_height="83dp"
        android:background="@drawable/red_ring"
        android:text="@string/emo_angry"
        android:textColor="@color/white"
        android:textSize="12sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btn_done_popup"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_marginBottom="20dp"
        android:layout_marginEnd="5dp"
        android:layout_marginRight="5dp"
        android:text="@string/done_btn"
        android:textColor="@color/white" />

    <Button
        android:id="@+id/btn_close_popup"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_marginBottom="20dp"
        android:text="@string/cancel_btn"
        android:textColor="@color/white" />

</LinearLayout>

但是最好使用RelativeLayout而不是使用太多的LinearLayout。希望这能有所帮助。


1

ScrollView是一个FrameLayout,意味着您必须放置一个包含要滚动的所有内容的子项;该子项本身可以是一个具有复杂对象层次结构的布局管理器。

因此,您必须通过概念清晰来解决问题,您可以按照我的答案解决这个问题。也许它会清除您的概念并帮助解决您的问题。

您只能在ScrollView中放置单个标签(子布局)。如果您放置了多个LinearLayout,则需要将单个LinearLayout放入其中,然后将其他LinearLayout放入其中。


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