android - Как вы можете прокручивать LinearLayout?


У меня много элементов на экране, и мне нужно использовать полосу прокрутки, чтобы пользователь мог прокручивать вниз. Однако прокрутка либо не видна, либо не работает. Как можно добавить полосу прокрутки в LinearLayout ?


Answers


Оберните линейный макет с помощью <ScrollView>

См. Здесь пример:

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



<ScrollView 
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/scroll" 
      android:layout_width="match_parent"
      android:layout_height="wrap_content">

      <LinearLayout 
            android:id="@+id/container"
            android:orientation="vertical" 
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
      </LinearLayout>

 </ScrollView>



Вот как я это сделал с помощью проб и ошибок.

ScrollView - (внешняя оболочка).

 LinearLayout (child-1).

      LinearLayout (child-1a).

      LinearLayout (child-1b

Поскольку Scrollview может иметь только один ребенок, этот ребенок является линейным макетом. Затем все остальные типы макетов встречаются в первом линейном макете. Я еще не пытался включить относительный макет, но они меня задирают, поэтому я подожду, пока не вернется мое здравомыслие.




Это можно сделать с помощью тега <ScrollView> . Для ScrollView одна вещь, которую вы должны напомнить, что ScrollView должен иметь одного ребенка .

Если вы хотите, чтобы ваш полный макет был прокручиваемым, добавьте <ScrollView> вверху. Проверьте приведенный ниже пример.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll" 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout 
        android:id="@+id/container" 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
            <!-- Content here -->
    </LinearLayout>

</ScrollView>

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="400dp">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
                <!-- Content here -->
        </LinearLayout>

    </ScrollView>

</LinearLayout>



 <LinearLayout 
        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:orientation="vertical"
        tools:context=".MainActivity">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"`enter code here`>

                <---------Content Here --------------->
            </LinearLayout>
       </ScrollView>
    </LinearLayout>



Вам нужно поместить ScrollView в качестве первого дочернего элемента файла Layout, а теперь вставьте его linearlayout внутри него. Теперь андроид будет решать на основе контента и размера устройства, независимо от того, показывать ли его прокручиваемое или нет.

Убедитесь, что linearlayout не имеет родного брата, потому что ScrollView не может иметь более одного ребенка.




При использовании Eclipse ADT: Графический макет -> Композитный -> ScrollView




Вы можете добавить атрибут в linearLayout: android:scrollbars="vertical"