gpt4 book ai didi

android - GridLayout 的 SetGravity 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:05:32 24 4
gpt4 key购买 nike

我正在使用一个简单的 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 选项没有任何作用外,一切正常。我已经尝试过 - 将 layout_width 更改为 XML 文件中的不同类型,为 GridLayout 添加引力等,如本网站其他解决方案中所述。另一件需要注意的事情是,我在 fragment 内的异步任务中执行此操作。基本上我想实现 layout_gravity="fill_horizo​​ntal" 在 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]);
}

最佳答案

正如 Karan Mer 所说,您使用 GridLayout.LayoutParams 设置布局重力。

但请注意,在 Gridlayout 中,您必须先设置子项(在您的情况下为 Button)的 columnSpec/rowSpec:

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);

不知道是bug还是故意的。 (我正在使用 Android API 19)

关于android - GridLayout 的 SetGravity 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14435495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com