web-dev-qa-db-ja.com

スクロール可能なTableLayoutを作成する方法は?

こちらのXMLコードをご覧ください:

<TableLayout
    Android:id="@+id/tableLayout1"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:padding="10dip"
    xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <TableRow
    Android:id="@+id/tableRow1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content">

    <!-- Some stuff goes here -->

    />
    </TableRow>

    <TableRow
    Android:id="@+id/tableRow2"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content">

    <!-- Some stuff goes here -->

    />
    </TableRow>

    <TableRow
    Android:id="@+id/tableRow3"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content">

    <!-- Some stuff goes here -->

    />
    </TableRow>


</TableLayout>

私のコードははるかに長いですが、不要な部分を削除しただけです。問題は、このTableLayoutをスクロール可能にして、すべてのものを表示できるようにすることです。

スクロール可能にするために、この行をTableLayoutに入れようとしました:

Android:isScrollContainer="true"

しかし、それは仕事をしません。 方法はありますか?

51
iTurki

すべてを次のものに入れます。

<ScrollView
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:scrollbars="none"
    Android:layout_weight="1">
    <LinearLayout
      Android:layout_width="fill_parent"
      Android:layout_height="fill_parent"
      Android:orientation="vertical">

    ...

</ScrollView>
99
citizen conn

ScrollViewにLinearLayoutは技術的には必要ありません。

<ScrollView
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:scrollbars="none"
Android:layout_weight="1">

    <TableLayout
    Android:id="@+id/tableLayout1"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:padding="10dip"
    Android:isScrollContainer="true">

    <TableRow
    Android:id="@+id/tableRow1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content">

        <--!Everything Else You Already Have-->

    </TableRow>
 </TableLayout>
</ScrollView>

ScrollView内で十分なスペースを確保すると、スクロール効果がアクティブになります(HTML TextAreaのようなもので、十分なテキスト行があれば、スクロールがアクティブになります)。

ScrollViewをネストすることもできますが、ScrollViewに十分なコンテンツがあるまで、スクロール効果を感じることはできません。

19
Artorias2718

Constraint Layout内でも機能します。次の属性をTabLayoutに追加するだけです。

<Android.support.constraint.ConstraintLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <TableLayout
            Android:id="@+id/tableLayout"
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:isScrollContainer="true">

        . . .
1
Nakamoto

ありがとうmbauerそれは私の問題を解決した

  1. TableLayout
  2. 終了するTableRow(列のヘッダー用)
  3. ScrollView
  4. LinearLayout
  5. x終わりのあるTableRow
  6. linearLayoutを終了します
  7. scrollViewを終了
  8. tableLayoutを終了
1
Phil