在Fragment中以编程方式将视图添加到另一个视图

时间:2014-10-17 08:25:28

标签: android android-fragments android-linearlayout

我的代码出了问题。我有一个表示我的片段布局的XML(fragment_layout.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   android:orientation="vertical" >

</LinearLayout>

和另一个表示单个视图的xml文件,该视图位于片段布局(element.xml)中:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<TextView
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true" />

<EditText
    android:id="@+id/et"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:inputType="number"
    android:text="0" />

</RelativeLayout>   

这就是我在onCreateView方法中填充Fragment布局的方法:

View view = inflater.inflate(R.layout.fragment_layout, container,
            false);

    some_elements = getActivity().getResources().getStringArray(
            R.array.some_array);

    LinearLayout root = (LinearLayout) view.findViewById(R.id.root_layout);

    for (int i = 0; i < some_elements.length; i++) {

        View element = inflater.inflate(
                R.layout.element, container, false);

        TextView tv= (TextView) element.findViewById(R.id.tv);
        prodotto.setText(prodotti[i]);

        EditText et= (EditText) element.findViewById(R.id.et);

        root.addView(element);

    }

    return view; 

现在发生只有“some_elements”数组的第一个元素显示在片段内(元素包含10个元素)。为什么没有显示其他元素?怎么了?

1 个答案:

答案 0 :(得分:3)

问题是android:layout_height="match_parent",在您的RelativeLayout中。它应该是wrap_content