Android:在嵌套布局中动态添加视图

Posted

技术标签:

【中文标题】Android:在嵌套布局中动态添加视图【英文标题】:Android: Adding view dynamically in a nested layout 【发布时间】:2013-12-18 10:56:26 【问题描述】:

我有一个具有以下结构的 abc.xml。

<ScrollView
  android:layout_
  android:layout_>
 <RelativeView
   android:layout_
   android:layout_>
  <LinearLayout
    android:id="@+id/linear"
    android:layout_
    android:layout_
    >
  </LinearLayout>
 </RelativeLayout>
</ScrollView>

我想将文本视图动态添加到线性布局。下面是我的代码。我没有收到任何错误,但没有得到想要的结果。

LayoutInflater Inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = Inflater.inflate(R.layout.abc, null);

LinearLayout layout = (LinearLayout) view.findViewById(R.id.linear);

        TextView Tag = new TextView(getActivity());
        Tag.setText("textString");
        Tag.setBackgroundResource(R.color.bg_color);
        Tag.setTextAppearance(getActivity(), R.style.SmallFont);
        layout.addView(Tag);

【问题讨论】:

你为什么使用RelativeLayout? 我在相对布局中还有其他视图,例如 textviews 和 buttonviews 【参考方案1】:

你的xml应该是

<ScrollView
  android:layout_
  android:layout_>
 <LinearLayout
   android:layout_
   android:layout_
   android:orientation="vertical">
  <LinearLayout
    android:id="@+id/linear"
    android:layout_
    android:layout_
    >
  </LinearLayout>
 </LinearLayout>
</ScrollView>

添加文本视图的 java 代码是

LinearLayout layout = (LinearLayout) view.findViewById(R.id.linear);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
TextView Tag = new TextView(getActivity());
tag.setLayoutParams(params);
Tag.setText("textString");
Tag.setBackgroundResource(R.color.bg_color);
Tag.setTextAppearance(getActivity(), R.style.SmallFont);
layout.addView(Tag);

【讨论】:

【参考方案2】:

我不知道你是否找到了答案,但我刚刚遇到这个问题,我找到了一种方法。 我认为您需要调整一位的布局如下:

<ScrollView
    android:layout_
    android:layout_ >

    <RelativeView
        android:layout_
        android:layout_ >

        <LinearLayout
            android:layout_
            android:layout_ >

            <LinearLayout
                android:id="@+id/linear"
                android:layout_
                android:layout_ >
            </LinearLayout>
        </LinearLayout>

    </RelativeView>

</ScrollView>

【讨论】:

【参考方案3】:

你必须付出,

android:layout_orientation="either horizontal or vertical"

到带有 id:linear 的线性布局。

【讨论】:

以上是关于Android:在嵌套布局中动态添加视图的主要内容,如果未能解决你的问题,请参考以下文章

如何实现在动态布局中添加更多视图在android中实现滚动视图

Android:创建自定义视图并将其动态添加到布局中

动态添加视图并设置参数和规则无法正常工作(android)

如何在 recyclerview 适配器中将动态视图添加到 android 布局

动态添加一个视图及其布局属性(要掌握)

Android 怎么将fragment 动态地添加到布局中的任意位置?