gpt4 book ai didi

android - 在 LinearLayout 中动态添加 View 水平和垂直

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:09 24 4
gpt4 key购买 nike

我想将动态 View 添加到 Horizo​​ntal LinearLayout 中。但我的问题是,如果水平位置没有空间,它应该自动垂直放置。

我的形象

enter image description here

我的预期结果

enter image description here

我的代码是

    for (int j = 0; j < jobDet.getKeywords().length; j++) {

RelativeLayout tr_head = (RelativeLayout) getLayoutInflater().inflate(R.layout.tag_lay, null);

TextView label_date = (TextView) tr_head.findViewById(R.id.tag_name);
label_date.setText(jobDet.getKeywords()[j]);

keywordL.addView(tr_head, new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT));

}

我的“tag_lay.xml”

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="30dp"
android:id="@+id/tag_name"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:background="@drawable/round_edit_box"
android:text=" PHP "
android:gravity="center"
android:lines="1"
android:layout_marginRight="5dp"/>

</RelativeLayout>

最佳答案

您不能使用单个 LinearLayout 来做到这一点,因为它有 VERTICALHORIZONTAL 方向。我建议你看看谷歌的 FlexboxLayout .它是一个提供布局的库,您可以在其中实现类似的 View 。您可以通过将以下行添加到您的应用级 gradle 文件来添加此库:

compile 'com.google.android:flexbox:0.1.3'

您可以将 keywordLLinearLayout 更改为 FlexboxLayout。容器布局的示例代码如下所示:

<com.google.android.flexbox.FlexboxLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/flexbox_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:alignContent="flex_start"
app:alignItems="flex_start"
app:flexWrap="wrap"/>

您可以根据需要更改alignContentalignItemsflexWrap 的值。尽管这应该有用,因为它对我有用。添加 child 时,您可以执行以下操作:

for (int j = 0; j < jobDet.getKeywords().length; j++) {

RelativeLayout tr_head = (RelativeLayout) getLayoutInflater().inflate(R.layout.tag_lay, keywordL, false );

TextView label_date = (TextView) tr_head.findViewById(R.id.tag_name);
label_date.setText(jobDet.getKeywords()[j]);
keywordL.addView(tr_head);
}

如果您在实现时遇到困难,请告诉我。

关于android - 在 LinearLayout 中动态添加 View 水平和垂直,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38092923/

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