RaW*_*aWa 6 android gravity grid-layout android-layout
我正在使用一个简单的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>
Run Code Online (Sandbox Code Playgroud)
我正在使用这个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]);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
正如 Karan Mer 所说,您使用 GridLayout.LayoutParams 设置布局重力。
但要小心,在 Gridlayout 中,您必须先设置子项的 columnSpec / rowSpec(在您的情况下为 Button):
param.columnSpec = GridLayout.spec(0);
param.rowSpec = GridLayout.spec(0);
Run Code Online (Sandbox Code Playgroud)
然后才
param.setGravity(Gravity.RIGHT);
Run Code Online (Sandbox Code Playgroud)
如果在执行 setGravity 时 columnSpec / rowSpec 未定义,则重力不起作用...
即使你这样做:
param.setGravity(Gravity.RIGHT);
param.columnSpec = GridLayout.spec(0);
param.rowSpec = GridLayout.spec(0);
Run Code Online (Sandbox Code Playgroud)
重力不起作用...
正确的方法是:
param.columnSpec = GridLayout.spec(0);
param.rowSpec = GridLayout.spec(0);
param.setGravity(Gravity.RIGHT);
Run Code Online (Sandbox Code Playgroud)
不知道是bug还是故意的。(我使用的是 Android API 19)
归档时间: |
|
查看次数: |
2221 次 |
最近记录: |