如何在具有其他约束的线性布局中动态添加文本视图?

时间:2017-06-07 05:12:21

标签: android android-layout

我正在开发一个应用程序,我想在列中按顺序添加textview。最多3个文本视图可以水平填充屏幕宽度。如果要添加的文本视图超过3个,则应在下一行添加新文本视图,依此类推。见下图 -

---第一---------------第二--------------第三

--- 4th ---------------- 5th -----等等

我知道我们需要使用具有不同方向参数的嵌套线性布局。但是,我如何解决这个“每行最多3个textviews约束”。我知道这必须使用 weight 参数做一些事情。我到目前为止编写的代码是 -

LinearLayout out = (LinearLayout) findViewById(R.id.linear_params);
TextView mView = new TextView(this);
mView.setText("placeholder");
mView.setLayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT));
out.addView(mView);

对于我写的布局 -

<LinearLayout
    android:id="@+id/out
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_margin="5dp">

    <LinearLayout
    android:id="@+id/in
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:layout_gravity="center_horizontal"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:orientation="horizontal">
    <TextView ... />
    </LinearLayout>
    </LinearLayout>

我应该如何修改上面的xml和代码,以便我能够根据需要动态放置视图?

1 个答案:

答案 0 :(得分:0)

执行此操作的正确方法是使用具有三列的GridView组件。它还允许您添加视图。

如果使用LinearLayout,则必须使用权重并继续每行添加新的LinearLayout,这将需要大量的计算和透支处理。

使用GridView将有助于避免编写代码来计算和添加每一行和每个视图,并且还将保持布局优化。