Как сделать линейный макет с прокруткой? - PullRequest
25 голосов
/ 23 ноября 2010

Привет всем - возможно ли сделать всю линейную раскрутку прокручиваемой, когда это необходимо? (когда все элементы в макете не помещаются на главном экране)?

Я знаю, что это выполнимо с представлениями и т. Д. ... но есть ли способ включить все в макет для одновременной прокрутки?

Может быть, прокручиваемый термин не подходит ... в основном - если один из элементов (в данном случае кнопка) не полностью попадает на главный экран телефона, и мне нужно провести пальцем вниз, чтобы получить доступ это ... если это имеет смысл.

Ответы [ 4 ]

61 голосов
/ 23 ноября 2010

LinearLayout является подклассом View, поэтому все, что вы можете сделать с View, вы можете с помощью Linear Layout.

Так что просто используйте ScrollView с одним LinearLayout как дочерний элемент

29 голосов
/ 14 февраля 2014

Просто пример того, что говорят другие парни

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center|left"
        android:orientation="vertical" >

         Here is your layout!

    </LinearLayout>

</ScrollView>
10 голосов
/ 23 ноября 2010

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

-Основной вид

- ScrollView

--- LinearView

---- Sub View 1

---- Sub View 2

---- Sub View 3

....

2 голосов
/ 23 января 2017

Вы можете сделать любой макет прокручиваемым.Под <?xml version="1.0" encoding="utf-8"?> добавьте следующие строки:

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

и в конце добавьте </ScrollView>

пример не прокручиваемого действия:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:verticalScrollbarPosition="right"
    tools:context="p32929.demo.MainActivity">


    <TextView
        android:text="TextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="102dp"
        android:id="@+id/textView"
        android:textSize="30sp" />
</RelativeLayout>

делая его прокручиваемым, он становится таким:

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

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

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:verticalScrollbarPosition="right"
        tools:context="p32929.demo.MainActivity">


        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="102dp"
            android:text="TextView"
            android:textSize="30sp" />
    </RelativeLayout>
</ScrollView>
...