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

时间:2015-07-01 05:04:00

标签: android android-layout android-linearlayout

我在Android应用程序中有一个弹出视图。对于纵向屏幕,弹出页面显示正常,但如果我旋转屏幕以横向显示弹出布局部分显示。我在弹出窗口中点击了按钮。无法在横向模式下查看按钮。我正在使用的弹出页面是

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

如何在横向屏幕或小屏幕中显示整个页面?任何帮助,将不胜感激。提前谢谢。

4 个答案:

答案 0 :(得分:2)

你不能在scrollview中设置多个LinearLayout但是如果你想要将所有的linearlayout放在Linearlayout中并将其放在scrollview中

使用 ScrollView

包裹线性布局

请参阅此处Example

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   xmlns:android="http://schemas.android.com/apk/res/android">
   <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <LinearLayout 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:orientation="vertical">
              <!-- Content here -->
        </LinearLayout>
  </ScrollView>
</LinearLayout>

答案 1 :(得分:2)

选中此项我使用了您的xml(更改背景): -

func generateQuestion() {
    var randomoperation:UInt32 = arc4random_uniform(3)
    if randomoperation == 0 {
        operation.text = "+"
    }
    if randomoperation == 1 {
        operation.text = "-"
    }
    if randomoperation == 2 {
        operation.text = "X"
    }
    if randomoperation == 3 {
        operation.text = "/"
    }
}

答案 2 :(得分: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。希望它有所帮助。

答案 3 :(得分:1)

ScrollView是 FrameLayout ,意思是你必须在其中放置一个孩子,其中包含要滚动的全部内容;这个孩子本身可能是一个具有复杂的对象层次结构的布局管理器。

所以你必须通过概念清除解决问题follow my answer of this question。它可能会清除你的概念并帮助解决你的问题。

您只能在scrollview中使用单个标记(子布局)。如果您已经放置了多个线性布局,则采用单个线性布局,然后将其他线性布局放入其中。