Android - 滚动视图

时间:2015-10-15 07:43:54

标签: android

对于我的应用程序,我有一个具有

布局的屏幕
<Linear Layout>
  <RelativeLayout>
  <RelativeLayout>
  <RelativeLayout>
  <RelativeLayout>
  <RelativeLayout>
  <RelativeLayout>
  <RelativeLayout>
  <RelativeLayout>

在这些相对布局中是页面的内容,但在其中一个中有以下

  <RelativeLayout>
    <LinearLayout>
    <LinearLayout>
    <LinearLayout>
    <LinearLayout>

我希望这些内容可以滚动但是应用程序崩溃说明可滚动视图只能有一个子项目,不管怎么说都在这周围?

按要求编辑XML

 <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="2.27"
    >



    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout"
        android:layout_above="@+id/linearLayout2"
        android:layout_alignParentStart="true">

        <Spinner
            android:layout_width="0dp"
            android:layout_height="25dp"
            android:id="@+id/Combo_FlavChoice1"
            android:layout_weight="1"
            android:spinnerMode="dropdown"
            android:entries="@array/VGPG_combo"
            />

        <Spinner
            android:layout_width="0dp"
            android:layout_height="25dp"
            android:id="@+id/Combo_InvChoice1"
            android:layout_weight="2"
            android:spinnerMode="dialog" />

        <EditText
            android:layout_width="0dp"
            android:layout_height="30dp"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/Text_Perc1"
            android:layout_weight="1"
            android:textSize="8sp" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout2"
        android:layout_above="@+id/linearLayout3"
        android:layout_alignParentStart="true">

        <Spinner
            android:layout_width="0dp"
            android:layout_height="25dp"
            android:id="@+id/Combo_FlavChoice2"
            android:layout_weight="1"
            android:spinnerMode="dropdown"
            android:entries="@array/VGPG_combo" />

        <Spinner
            android:layout_width="0dp"
            android:layout_height="25dp"
            android:id="@+id/Combo_InvChoice2"
            android:layout_weight="2"
            android:spinnerMode="dialog" />

        <EditText
            android:layout_width="0dp"
            android:layout_height="30dp"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/Text_Perc2"
            android:layout_weight="1"
            android:textSize="8sp" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout3"
        android:layout_above="@+id/linearLayout4"
        android:layout_alignParentStart="true">

        <Spinner
            android:layout_width="0dp"
            android:layout_height="25dp"
            android:id="@+id/Combo_FlavChoice3"
            android:layout_weight="1"
            android:spinnerMode="dropdown"
            android:entries="@array/VGPG_combo" />

        <Spinner
            android:layout_width="0dp"
            android:layout_height="25dp"
            android:id="@+id/Combo_InvChoice3"
            android:layout_weight="2"
            android:spinnerMode="dialog" />

        <EditText
            android:layout_width="0dp"
            android:layout_height="30dp"
            android:inputType="numberDecimal"
            android:ems="10"
            android:id="@+id/Text_Perc3"
            android:layout_weight="1"
            android:textSize="8sp" />
    </LinearLayout>

编辑 - 这就是视图的样子

Original

现在:

Now

2 个答案:

答案 0 :(得分:0)

从文档(http://developer.android.com/reference/android/widget/ScrollView.html):

  

ScrollView是一个FrameLayout,意味着您应该在其中放置一个包含要滚动的全部内容的子项;这个子本身可能是一个具有复杂对象层次结构的布局管理器。经常使用的子项是垂直方向的LinearLayout,呈现用户可以滚动的顶级项目的垂直数组。

您只需将外部RelativeLayout包装在ScrollView中。此外,看起来你在RelativeLayout中将3个LinearLayouts放在彼此的顶部,将它们放在LinearLayout中并使其成为wrap_content的高度可能更好吗?

答案 1 :(得分:0)

将一个LinearLayout添加到ScrollView并用RelativeLayouts填充它。像这样:

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

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/scrollView" >

           <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            add your stuff here

           </LinearLayout>
    </ScrollView>
</FrameLayout>