【问题标题】:Add a ScrollView in Linear and Relative Layout in one XML file在一个 XML 文件中添加线性和相对布局的 ScrollView
【发布时间】:2013-03-18 03:29:39
【问题描述】:

我正在尝试将相对布局的内容设置为 Scrollview,因为它不适合屏幕。我的 XML 文件由线性和相对布局组成,其中线性作为父布局,相对作为子布局。

虽然我已经浏览过关于这个主题的大部分问题,但我能找到的只是如何分别在线性或相对布局中插入 Scrollview,而不是当两种布局都在一个文件中时。

我的 XML 文件

<?xml version="1.0" encoding="UTF-8"?>

<!-- 
   Being of Linear Layout
 -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/week1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/week1"
        android:textColor="#FFFFFF"
        android:textSize="25sp"
        android:paddingTop="50dp"
        android:background="#00141c" />
<!--
Begin Relative Layout
-->

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

    <ImageView
        android:id="@+id/treadmillimage"
        android:layout_width="115dp"
        android:layout_height="93dp"
        android:paddingTop="10dp"
        android:src="@drawable/treadmill" />

    <EditText
        android:id="@+id/durOnTreadmill"
        android:layout_width="129dp"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number"
        android:layout_marginLeft="180dp" 
        android:layout_centerVertical="true"/>

<!--
End Relative Layout
-->
    </RelativeLayout>

    <TextView
        android:id="@+id/treadmilltext"
        android:layout_width="91dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="@string/treadmill"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

<!--
Begin Relative Layout
-->

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

    <ImageView
        android:id="@+id/stepperimage"
        android:layout_width="115dp"
        android:layout_height="93dp"
        android:paddingTop="10dp"
        android:src="@drawable/stepper" />

    <EditText
        android:id="@+id/durOnStepper"
        android:layout_width="129dp"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number"
        android:layout_marginLeft="180dp" 
        android:layout_centerVertical="true"/>

<!--
End Relative Layout
-->
    </RelativeLayout>

    <TextView
        android:id="@+id/steppertext"
        android:layout_width="91dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="@string/stepper"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

<!--
Begin Relative Layout
-->
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:scrollHorizontally="true">

    <ImageView
        android:id="@+id/stationaryrowing"
        android:layout_width="115dp"
        android:layout_height="93dp"
        android:paddingTop="10dp"
        android:src="@drawable/stationaryrowing" />

    <EditText
        android:id="@+id/durOnStationaryRowing"
        android:layout_width="129dp"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number"
        android:layout_marginLeft="180dp" 
        android:layout_centerVertical="true"/>

<!--
End Relative Layout
-->
    </RelativeLayout>

    <TextView
        android:id="@+id/stationaryrowingtext"
        android:layout_width="91dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="@string/stationaryrowing"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

<!--
Begin Relative Layout
-->
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:scrollHorizontally="true">

    <ImageView
        android:id="@+id/exercisebikeimage"
        android:layout_width="115dp"
        android:layout_height="93dp"
        android:paddingTop="10dp"
        android:src="@drawable/excerisebike" />

    <EditText
        android:id="@+id/durOnexcerisebike"
        android:layout_width="129dp"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number"
        android:layout_marginLeft="180dp" 
        android:layout_centerVertical="true"/>

 <!--
End Relative Layout
-->
    </RelativeLayout>

     <TextView
        android:id="@+id/excerisebiketext"
        android:layout_width="91dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="@string/exercisebike"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

 <!--
Begin Relative Layout
-->
       <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:scrollHorizontally="true">

    <ImageView
        android:id="@+id/ellipticaltrainerimage"
        android:layout_width="115dp"
        android:layout_height="93dp"
        android:paddingTop="10dp"
        android:src="@drawable/ellipticaltrainer" />

    <EditText
        android:id="@+id/durOnellipticaltrainer"
        android:layout_width="129dp"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number"
        android:layout_marginLeft="180dp" 
        android:layout_centerVertical="true"/>

<!--
End Relative Layout
-->
    </RelativeLayout>

        <TextView
        android:id="@+id/ellipticaltrainertext"
        android:layout_width="91dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:text="@string/ellipticaltrainer"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

<!--
End Linear Layout
-->
</LinearLayout>   

第1周的TextView下面的所有内容都必须在Scrollview中

在此先感谢,非常感谢所有答案:)

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    如果您不希望最顶部的TextView 成为滚动区域的一部分,那么您必须将RelativeLayouts 嵌套到另一个布局中,因为ScrollView 只能有一个直接子级。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    
        <TextView ... />
    
        <ScrollView ... >
            <!-- only one direct child for scrollview: -->
            <LinearLayout ... >
    
                <RelativeLayout ... />
                <TextView ... />
                <RelativeLayout ... />
                <TextView ... />
                <RelativeLayout ... />
                <TextView ... />
                <RelativeLayout ... />
                <TextView ... />
                <!-- etc -->
    
            </LinearLayout>
    
        </ScrollView>
    
    </LinearLayout>
    

    【讨论】:

      【解决方案2】:

      只需将 scorolleview 作为 RelativeLayout 的父级,如下所示:

      <ScrollView 
          android:layout_width="fill_parent"
          android:layout_height="wrap_content">
      
      <RelativeLayout 
          android:layout_width="fill_parent"
          android:layout_height="wrap_content" 
          android:scrollHorizontally="true">
      
          <ImageView
              android:id="@+id/treadmillimage"
              android:layout_width="115dp"
              android:layout_height="93dp"
              android:paddingTop="10dp"
              android:src="@drawable/treadmill" />
      
      .....
      .....
      </RelativeLayout>
      </ScrollView>
      

      【讨论】:

      • 抛出异常,“渲染时引发异常:ScrollView 只能承载一个直接子级”
      • 你搞错了。只需在LinearLayout之前和RelativeLayout之后关闭crollview。明白了吗?我还稍微编辑了答案。从 SrollView 中删除 xmlns。
      • 如您所见,我有几个相对布局(总共 4 个)。如果我在第一个结束时关闭滚动视图,根据我的知识,它只会应用于第一个。但是,我想让所有 4 个相对布局一起滚动。如果我关闭线性布局结束标记上方的滚动视图,它会引发相同的异常。
      • 不,只需从每个 RelativeLayout 中删除 xmlns:android="schemas.android.com/apk/res/android" 并尝试。
      • 谢谢伙计,它像专业人士一样工作:)。我以为你的意思是从 ScrollView 中删除该行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多