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>