Android XML Scrollview

Я пытаюсь поставить несколько TextViews ниже друг друга в одном ScrollView, но когда я делаю это, это вызывает сбой моего приложения. Как я могу поместить один и тот же текст дважды под друг друга?

  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="20dp"
    android:layout_marginBottom="20dp"
    android:layout_below="@id/linear">

    <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/lorem_ipsum"/>

    <TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/lorem_ipsum"/>
  </ScrollView> 

4 ответа

Решение

Согласно документации для Android: -

http://developer.android.com/reference/android/widget/ScrollView.html

ScrollView - это FrameLayout, то есть вы должны поместить в него одного потомка, содержащего все содержимое для прокрутки; этот потомок сам может быть менеджером макета со сложной иерархией объектов. Дочерний элемент, который часто используется, представляет собой LinearLayout в вертикальной ориентации, представляющий вертикальный массив элементов верхнего уровня, по которому пользователь может прокручивать.

Scrollview всегда содержит только один дочерний макет. Линейный макет имеет свойство ориентации для управления дочерним макетом, горизонтальным или вертикальным.

Ваш код должен выглядеть следующим образом:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical" >
         <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/lorem_ipsum"/>

         <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/lorem_ipsum"/>
   </LinearLayout></ScrollView>

Я думаю, что приведенный выше код поможет вам.

Прямой дочерний элемент ScrollView должен быть другим макетом, который поддерживает несколько дочерних элементов, например RelativeLayout или LinearLayout.

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginBottom="20dp"
    android:layout_marginTop="20dp" >

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/lorem_ipsum" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/lorem_ipsum" />
    </LinearLayout>

</ScrollView>

Представление прокрутки может иметь только одного ребенка. Так что используйте LinearLayout внутри Scroll View, а затем внутри, делайте то, что вы хотите. Как это

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp" >

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="@string/app_name" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:text="@string/app_name" />
</LinearLayout>

Ваш Scrollview может иметь только один дочерний вид, поэтому поместите макет и ваши текстовые представления в этот макет:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:layout_marginBottom="20dp"
    android:layout_below="@id/linear">

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/lorem_ipsum"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/lorem_ipsum"/>

    </LinearLayout> 

</ScrollView> 
Другие вопросы по тегам