0

我想要一个 2-column ScrollView。在每一列中,应该有一个ImageButton

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_height="800dp"
android:background="#FFF"
android:layout_width="600dp" >

<LinearLayout
    android:id="@+id/categoryLinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</LinearLayout>

</ScrollView>

和代码:

        LinearLayout sv = (LinearLayout) findViewById(R.id.categoryLinearLayout1);

    for (int i = 0; i < 10; i++) {
        ImageButton ib = new ImageButton(this);
        // ib.setImageDrawable(getResources().getDrawable(R.drawable.cat1));

        Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                R.drawable.cat1);
        int width = 300;
        int height = 300;
        Bitmap resizedbitmap = Bitmap.createScaledBitmap(bmp, width,
                height, true);
        ib.setImageBitmap(resizedbitmap);
        sv.addView(ib);
    }

但是这样一来,10个都是ImageButtons横向的。我需要的是,将 2ImageButton排成一行(它使 600 像素)然后往下,放更多 2ImageButtons等等。所以 10 将有 5 行ImageButtons

我怎样才能做到这一点?

4

1 回答 1

1

使用TableLayout

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView1"
android:layout_height="800dp"
android:background="#FFF"
android:layout_width="600dp" >

<TableLayout
    android:id="@+id/categoryLinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</TableLayout>

</ScrollView>

然后在您的代码中:

TableLayout sv = (TableLayout) findViewById(R.id.categoryLinearLayout1);

for (int i = 0; i < 5; i++) {
    TableRow tr = new TableRow(this);
    tr.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
    for (int j = 0; j < 2; j++) {
         ImageButton ib = new ImageButton(this);
         // ib.setImageDrawable(getResources().getDrawable(R.drawable.cat1));
         Bitmap bmp = BitmapFactory.decodeResource(getResources(),
              R.drawable.cat1);
         int width = 300;
         int height = 300;
         Bitmap resizedbitmap = Bitmap.createScaledBitmap(bmp, width,
            height, true);
         ib.setImageBitmap(resizedbitmap);
         ib.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
         tr.addView(ib);
     }
     sv.add(tr); 
}
于 2012-06-16T13:39:06.000 回答