web-dev-qa-db-ja.com

AndroidでLinearLayoutにスクロールバーを追加するにはどうすればよいですか?

Androidのビューにスクロールバーを追加するにはどうすればよいですか?

レイアウトXMLファイルのLinearLayoutAndroid:scrollbars:"vertical"を追加してみましたが、機能しません。

スクロールバーはデフォルトでAndroid=に描画されていると思いましたが、そうではないようです。自分で描画する必要があるようです。どうすればよいですか?

18
Angel

LinearLayoutはスクロール可能なコンテナではないため、スクロールバーを追加することはできません。

ScrollViewHorizontalScrollViewListViewGridViewExpandableListViewなどのスクロール可能なコンテナのみがスクロールバーを表示します。

LinearLayoutScrollView内に配置することをお勧めします。スクロールするのに十分なコンテンツがある場合、デフォルトで垂直スクロールバーが表示されます。

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

垂直スクロールバーを常に表示したい場合は、ScrollViewAndroid:scrollbarAlwaysDrawVerticalTrack="true"を追加します。 LinearLayoutの高さがwrap_contentに設定されていることに注意してください。これは、十分なコンテンツがある場合、LinearLayoutの高さがScrollViewよりも高くなる可能性があることを意味します-その場合、LinearLayoutを上下にスクロールできます。

50
Joseph Earl

この方法でウィジェットにスクロールバーを追加することはできません。ウィジェットを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);
11
rajath