以编程方式将 TextView 添加到网格布局对齐方式不正确

sil*_*udo 6 android dynamic android-gridlayout

嗨,我正在尝试将带有 drawableLeft 的 TextView 添加到 GridLayout。我在循环中添加这个 TextView。TextView 被正确添加,但未正确对齐。每个 textview 应该在一个水平行中采用相等的宽度,这不会发生。

以下是我正在使用的代码

    GridLayout gridLayout = new GridLayout(getContext());
            gridLayout.setAlignmentMode(GridLayout.ALIGN_BOUNDS);
            gridLayout.setColumnCount(2);
            gridLayout.setRowCount(3);
            TextView titleText;
            for (int i = 0; facilities != null && i < facilities.size(); i++) {
                titleText = new TextView(getContext());
                titleText.setText(facilities.get(i));
                gridLayout.addView(titleText, i);
                titleText.setCompoundDrawablesWithIntrinsicBounds(rightIc, 0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

May*_*gar 8

为此,您必须动态设置视图的列宽。这将最终将每个视图以相等的空间正确对齐。

GridLayout gridLayout = new GridLayout(getContext());
            gridLayout.setAlignmentMode(GridLayout.ALIGN_BOUNDS);
            gridLayout.setColumnCount(2);
            gridLayout.setRowCount(3);
            TextView titleText;
            for (int i = 0; facilities != null && i < facilities.size(); i++) {
                titleText = new TextView(getContext());
                titleText.setText(facilities.get(i));
                gridLayout.addView(titleText, i);
                titleText.setCompoundDrawablesWithIntrinsicBounds(rightIc, 0, 0, 0);
                GridLayout.LayoutParams param =new GridLayout.LayoutParams();
                param.height = LayoutParams.WRAP_CONTENT;
                param.width = LayoutParams.WRAP_CONTENT;
                param.rightMargin = 5;
                param.topMargin = 5;
                param.setGravity(Gravity.CENTER);
                param.columnSpec = GridLayout.spec(c);
                param.rowSpec = GridLayout.spec(r);
                titleText.setLayoutParams (param);

} 
Run Code Online (Sandbox Code Playgroud)

  • 这里的 c 和 r 是什么? (11认同)