Как добавить полосы прокрутки в LinearLayout в Android? - PullRequest
18 голосов
/ 14 апреля 2011

Как добавить полосы прокрутки к представлению в Android?

Я попытался добавить android:scrollbars:"vertical" к LinearLayout в моем XML-файле макета, но он не работает.

Я думал, полосы прокрутки по умолчанию нарисованы в Android, но это не так. Кажется, мы должны нарисовать это сами - как мне это сделать?

Ответы [ 2 ]

50 голосов
/ 14 апреля 2011

Нельзя добавить полосы прокрутки к LinearLayout, поскольку он не является прокручиваемым контейнером.

Только прокручиваемые контейнеры, такие как ScrollView, HorizontalScrollView, ListView, GridView, ExpandableListViewпоказать полосы прокрутки.

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

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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        >

        <!-- Your content goes here -->   

    </LinearLayout>
</ScrollView>

Если вы хотите, чтобывертикальная полоса прокрутки всегда отображается, затем добавьте android:scrollbarAlwaysDrawVerticalTrack="true" к вашему ScrollView.Обратите внимание, что высота LinearLayout установлена ​​на wrap_content - это означает, что высота LinearLayout может быть больше, чем у ScrollView, если контента достаточно - в этом случае вы сможете прокручиватьLinearLayout вверх и вниз.

11 голосов
/ 14 апреля 2011

Таким способом нельзя добавить полосу прокрутки к виджету.Вы можете обернуть свой виджет внутри ScrollView.Вот простой пример:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/txt"/>
    </LinearLayout>
</ScrollView>

Если вы хотите сделать это в коде:

ScrollView sv = new ScrollView(this);
//Add your widget as a child of the ScrollView.
sv.addView(wView);
...