我正在尝试创建一个向用户展示一些数据的 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/