我正在使用一个简单的GridLayout
我正在动态添加按钮。
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tagGridLayout"
android:background="@color/white"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:columnCount="3"
>
</GridLayout>
我正在使用这个Java代码来填充我的网格,除了设置的Gravity选项不做任何事情之外,所有工作都正常。我已经尝试过 - 将layout_width更改为XML文件中的不同类型,将重力添加到GridLayout
等,如本网站上其他解决方案中所述。另一件需要注意的事情是我在片段中的异步任务中执行此操作。基本上我想实现layout_gravity="fill_horizontal"
在XML中实现的目标。
tagButtons = new Button[trendingTagsCount];
for(int i=0;i<trendingTagsCount;i++)
{
tagButtons[i] = new Button(getActivity());
//tagButtons[i].setLayoutParams(new LayoutParams(Gravity.FILL_HORIZONTAL));
tagButtons[i].setText(getTagsList.get(i).tag);
tagButtons[i].setGravity(Gravity.FILL_HORIZONTAL);
tagButtonGrid.addView(tagButtons[i]);
}
答案 0 :(得分:4)
正如Karan Mer所说,你用GridLayout.LayoutParams设置布局重力。
但是要小心,在Gridlayout中你必须在之前设置Children的columnSpec / rowSpec(在你的情况下是Button):
param.columnSpec = GridLayout.spec(0);
param.rowSpec = GridLayout.spec(0);
然后才
param.setGravity(Gravity.RIGHT);
如果在执行setGravity时columnSpec / rowSpec为UNDEFINED,则重力不起作用......
即使你这样做:
param.setGravity(Gravity.RIGHT);
param.columnSpec = GridLayout.spec(0);
param.rowSpec = GridLayout.spec(0);
重力不起作用......
正确的方法是:
param.columnSpec = GridLayout.spec(0);
param.rowSpec = GridLayout.spec(0);
param.setGravity(Gravity.RIGHT);
我不知道这是一个错误还是一个故意的事情。 (我使用的是Android API 19)