我使用的是一个简单的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代码来填充我的网格,它工作得很好,除了set Gravity选项没有做任何事情之外。我已经尝试过-在XML文件中将layout_width更改为不同的类型,为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]);
}
发布于 2014-07-31 13:08:14
正如Karan Mer所说,你用GridLayout.LayoutParams设置了布局重力。
但是要小心,在Gridlayout中,你必须先设置孩子的columnSpec / rowSpec (在你的例子中是按钮):
param.columnSpec = GridLayout.spec(0);
param.rowSpec = GridLayout.spec(0);
只有到那时
param.setGravity(Gravity.RIGHT);
如果在执行setGravity时未定义columnSpec / rowSpec,则重力不起作用...
即使你这样做了:
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);
我不知道这是个bug还是故意的。(我使用的是Android API 19)
https://stackoverflow.com/questions/14435495
复制