web-dev-qa-db-ja.com

レイアウトを水平および垂直の両方にスクロールさせるにはどうすればよいですか?

TableLayoutを使用しています。このレイアウトでは、水平スクロールと垂直スクロールの両方が必要です。デフォルトでは、ビューで垂直スクロールを取得できますが、水平スクロールは機能しません。

Android SDK 1.5 r3を使用しています。すでにAndroid:scrollbars="horizontal"

カップケーキのアップデートでは、水平スクロールが可能なフォーラムをいくつか読んでいます。

レイアウトを両方向にスクロールさせるにはどうすればよいですか?

58
mudit

両方のスクロール動作を実現する簡単な方法を見つけることができました。

以下がそのXMLです。

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent" Android:layout_height="fill_parent"
    Android:scrollbars="vertical">

    <HorizontalScrollView 
        Android:layout_width="320px" Android:layout_height="fill_parent">

        <TableLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
            Android:id="@+id/linlay" Android:layout_width="320px"
            Android:layout_height="fill_parent" Android:stretchColumns="1"
            Android:background="#000000"/>

    </HorizontalScrollView>

</ScrollView>
132
mudit

遅すぎますが、このコードで問題が迅速に解決されることを願っています。コードをscrollviewの下に置くだけでは、何もする必要はありません。

<HorizontalScrollView
        Android:id="@+id/scrollView"
        Android:layout_width="wrap_content"
        Android:layout_height="match_parent">

      <ScrollView
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">
            //xml code
      </ScrollView>
</HorizontalScrollView>
5
Ashish Tikarye

この投稿で Androidの垂直および水平スクロールビュー 彼らは可能な解決策について引用しています:

Matt Clarkは、Androidソースに基づいてカスタムビューを構築しました。完全に機能しているようです: http://blog.gorges.us/2010/06/Android-two -dimensional-scrollview

そのページのクラスには、ビューの水平幅を計算するバグがあることに注意してください。 Manuel Hiltyによる修正はコメントにあります:

解決策:808行目のステートメントを次のように置き換えます。

final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(lp.leftMargin + lp.rightMargin, MeasureSpec.UNSPECIFIED);
1
neteinstein

これを使って:

Android:scrollbarAlwaysDrawHorizontalTrack="true"

例:

<Gallery Android:id="@+id/gallery"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:scrollbarAlwaysDrawHorizontalTrack="true" />
0
Patel Ekta