我正在尝试创建一个向用户展示一些数据的 Activity 。数据可以分为“单词”(每个单词都是一个小部件),“单词”的序列将构成数据(“句子”?),ViewGroup小部件包含这些单词。由于“句子”中所有“单词”所需的空间将超过显示器上可用的水平空间,因此,我希望像包装普通文本一样包装这些“句子”。

如下代码:

public class WrapTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout l = new LinearLayout(this);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        LinearLayout.LayoutParams mlp = new LinearLayout.LayoutParams(
                new ViewGroup.MarginLayoutParams(
                        LinearLayout.LayoutParams.WRAP_CONTENT,
                        LinearLayout.LayoutParams.WRAP_CONTENT));
        mlp.setMargins(0, 0, 2, 0);

        for (int i = 0; i < 10; i++) {
            TextView t = new TextView(this);
            t.setText("Hello");
            t.setBackgroundColor(Color.RED);
            t.setSingleLine(true);
            l.addView(t, mlp);
        }

        setContentView(l, lp);
    }
}

产生类似于左图的内容,但是我想要一种布局来呈现与右图相同的小部件。



是否有这样的布局或布局和参数的组合,还是我必须为此实现自己的ViewGroup?

最佳答案

自2016年5月起,Google推出了名为FlexboxLayout的新布局,可根据您的需要进行高度配置。

目前,FlexboxLayout位于Google GitHub存储库中的https://github.com/google/flexbox-layout

通过在build.gradle文件中添加依赖项,可以在项目中使用它:

dependencies {
    compile 'com.google.android:flexbox:0.3.2'
}

有关FlexboxLayout用法的更多信息,以及您可以在存储库自述文件或Mark Allison文章中找到的所有属性,这里:

https://blog.stylingandroid.com/flexboxlayout-part-1/

https://blog.stylingandroid.com/flexboxlayout-part2/

https://blog.stylingandroid.com/flexboxlayout-part-3/

08-18 20:36