1

内部にGridLayoutと 2 つ以上のボタンがあり、すべてのボタンは同じ幅でなければなりません。私の問題は、テキストの行数が異なるボタンの場合、ボタンもmarginTop異なることです。どうすればこれを修正できますか? すべてのボタンを同じ高さの位置に配置したい。

ありがとう。

すでに で設定しようとしていますが、機能GravityFILL_VERTICALていません。

GridLayout grid_neighbor = (GridLayout) findViewById(R.id.grid_neighbors);
grid_neighbor.setColumnCount(4);
for (i = 0; i < namelist.length; ++i) {
    Button temp = new Button(this);
    temp.setText(namelist[i]);                

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    lp.gravity = Gravity.FILL_VERTICAL;
    temp.setLayoutParams(lp);
    //temp.setGravity(Gravity.FILL_VERTICAL);
    temp.setWidth(button_size);
    temp.setHeight(button_size);
    grid_neighbor.addView(temp);
}

ここに写真があります:

私の写真

これも現在機能しています。

GridLayout grid_neighbor = (GridLayout) findViewById(R.id.grid_neighbors);
grid_neighbor.setColumnCount(4);
for (i = 0; i < namelist.length; ++i) {
    Button temp = new Button(this);
    temp.setText(namelist[i]);                

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    lp.addRule(RelativeLayout.ALIGN_TOP, temp.getId());
    temp.setLayoutParams(lp);
    //temp.setGravity(Gravity.FILL_VERTICAL);
    temp.setWidth(button_size);
    temp.setHeight(button_size);
    grid_neighbor.addView(temp);
}

これはうまくいきます!ありがとう。

GridLayout.Spec speccolumn = GridLayout.spec(i%4);
GridLayout.Spec specrow = GridLayout.spec(i/4, GridLayout.TOP);
grid_neighbor.addView(temp, new GridLayout.LayoutParams(specrow, speccolumn));
4

1 に答える 1

0

GridLayout 行のベースラインに設定しても問題が解決しない場合は? グリッド要素に異なる数のテキスト行がある場合、Android は行要素を整列させるのではなく、テキストを同じベースラインに自動的に整列させようとするためです。

編集: rowSpec.alignment = TOP (またはhttp://developer.android.com/reference/android/widget/GridLayout.Alignment.htmlから入手可能な配置の 1 つ) を設定する方が適切だと思います。詳細については、 http://developer.android.com/reference/android/widget/GridLayout.LayoutParams.htmlを参照してください。

于 2013-05-20T09:13:07.047 に答える