0

12 個のボタンがあり、レイアウトの水平軸と垂直軸に均等に配置する必要があります。使えませんGridLayout。これはどのように見えるべきかです:

weightまた、プロパティの誤った使用によるパフォーマンスの問題についてのメッセージを受け取りたくありません。現在、各ボタンの位置を他のボタンとの関係で設定することでそれをやろうとしていRelativeLayoutますが、もっと簡単/簡単/より推奨される方法があるかもしれません。

ボタンの例

アップデート

だから、私は a を使うことに決めました。GridViewこれが今の私のコードです:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/menuGrid"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnWidth="32dp"
    android:numColumns="3"
    android:verticalSpacing="5dp"
    android:horizontalSpacing="5dp"
    android:stretchMode="spacingWidthUniform"
    android:gravity="fill" />

私のアダプタークラスはこれです:

public class GridAdapter extends BaseAdapter {
    // Different methods ...

    // Images for the buttons
    private Integer[] mThumbIds = {
        R.drawable.btn_1, R.drawable.btn_2, R.drawable.btn_3, 
        R.drawable.btn_4, R.drawable.btn_5, R.drawable.btn_6, 
        R.drawable.btn_7, R.drawable.btn_8, R.drawable.btn_9, 
        R.drawable.btn_10, R.drawable.btn_11, R.drawable.btn_12
    };

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageButton imageButton;
        if (convertView == null) {
            imageButton = new ImageButton(mContext);
            imageButton.setLayoutParams(new GridView.LayoutParams(48, 48));
            imageButton.setScaleType(ImageButton.ScaleType.CENTER_CROP);
        } else {
            imageButton = (ImageButton) convertView;
        }

        imageButton.setImageResource(mThumbIds[position]);
        return imageButton;
    }
}

私の主な活動では、アダプターを次のように設定しています (それらは中央に配置され、スペース全体を占有しません)。

GridView gridview = (GridView) v.findViewById(R.id.menuGrid);
gridview.setAdapter(new GridAdapter(this));

ただし、ボタンは次のように表示されます (領域全体を占めるのではなく、中央に小さく表示されます)。

例 2

4

2 に答える 2

1

GridLayoutが使えない

したがって、GridView >>> LINK <<<numColumnsを使用します。API 1 以降で利用可能です。

于 2014-06-20T15:19:32.360 に答える
0

あなたが試すことができます:

  • GridLayout、 Android サポート パッケージのライブラリ プロジェクトからのバックポートを介して API レベル 7 に戻すことができますgridlayout-v7

  • TableLayout、すべての列にスペースを割り当てるために使用android:stretchColumnsします...しかし、これはセル自体が同じ幅である場合にのみ機能します

  • ネストされたLinearLayoutsand android:layout_weight。パフォーマンスに関する懸念が問題になる場合とそうでない場合があるためです (たとえば、これは単一のアクティビティまたはフラグメント レイアウトであり、a の行ではありませんListView) 。

ViewGroupまた、子ウィジェットのサイズ設定と配置のための独自のビジネス ルールを使用して、独自のウィジェットをいつでも実装できます。

あなたが現在試みていること -- RelativeLayout-- は、さまざまな画面サイズにうまく適応する方法で機能する可能性は低いようです。

于 2014-06-20T15:16:43.620 に答える