0

これはばかげた質問ですが、次のようにレイアウトを開発したいアプリケーションの途中です:

レイアウト

このレイアウトは、水平方向だけでなく垂直方向にもスクロールします。スクロールビューとそのテーブルビューの下を考えましたが、水平方向にもスクロールできるようにする方法。データは Web サービスから送られてくるので、どのくらいの量のデータが送られるかわかりません。

だから私を導いてください。

4

2 に答える 2

1

水平方向と垂直方向の両方のスクロールがあると、ユーザー エクスペリエンスが低下します。私があなたに提案するのは、1つだけを持つことであり、あなたの例で私が見ているのは水平のものです。セルを作成して水平スクロールビューを親として作成し、水平スクロールビューのビューチャイルドを膨らませる場所の両方を持つことが必須である場合。

于 2014-03-13T09:24:02.343 に答える
0

これは、2 つのスクロール ビューを使用することをお勧めしません。しかし、それが必要な場合は、次の 1 つのことを行うことができます。

XML レイアウトを次のように作成します。

<ScrollView
    android:id="@+id/scrollview_vertical_table"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

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

        <HorizontalScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            tools:ignore="UselessParent" >

            <TableLayout
                android:id="@+id/tablelayout"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:stretchColumns="*" >

            </TableLayout>
        </HorizontalScrollView>
    </LinearLayout>
</ScrollView>

次のように、このテーブルにプログラムでレコードまたは行を挿入します。

TableLayout tableLayoutTransactionLineHeading = (TableLayout) findViewById(R.id.tablelayout);
for(int j=0; j<rows; j++){      
    TableRow tableRow = new TableRow(this);
    tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));

    TextView lineno = new TextView(this);
    lineno.setText(lineNo[j]);
    lineno.setPadding(10, 10, 10, 10);
    lineno.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
    tableRow.addView(lineno);

    View v = new View(this);
            v.setLayoutParams(new TableRow.LayoutParams(1, TableRow.LayoutParams.MATCH_PARENT));
            v.setBackgroundColor(Color.rgb(50, 50, 50));
            tableRow.addView(v);

    tableLayout.addView(tableRow, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT,0f));
}

これがあなたを助けることを願っています。

于 2014-03-18T13:10:23.090 に答える