线性布局创建视图但仅显示第一个视图

时间:2014-10-09 17:46:07

标签: android android-layout android-linearlayout android-view programmatically-created

我正在以编程方式创建线性布局,但出于某种原因,我只能看到第一个视图。我可以看到正在创建其他视图的空间,并且正在正确创建此空间。例如,它具有垂直方向并保持6个视图。它创建了6个视图所需的空间,并垂直地进行,但仅显示第一个视图。

我已经看到了很多答案,但我无法让它发挥作用。我试过在线性布局和父布局上调用invalidate和postInvalidate但是没有得到刷新。我确保代码在我的主UI线程上运行。我之前删除了视图然后添加它但无济于事。我被困在这个上,似乎无法弄清楚我的线性布局出错了。

以下是一些代码,展示了我之前是如何做到这一点以及我是如何第一次尝试的:

     for (int i = 0; i < pdpComparisonAdapter.getCount(); i++) {
            final View item = pdpComparisonAdapter.getView(i, null, null);
            pdpComparisonsLinearLayout.addView(item);

    } 

这是线性布局xml:

        <LinearLayout
            android:layout_below="@+id/comparisons_title"
            android:id="@+id/comparisons_linear_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:background="#ffffff"
            android:orientation="vertical"/>

以下是我要添加的视图布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:src="@drawable/notable_amenity_star"
        android:layout_marginLeft="10dp"
        android:layout_alignParentLeft="true"
        android:id="@+id/comparison_iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


    <LinearLayout
        android:layout_toRightOf="@+id/comparison_iv"
        android:layout_marginLeft="10dp"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/comparison_value_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/comparison_label_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="24sp"/>

        <TextView
            android:id="@+id/comparison_explanation_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>


</RelativeLayout>

我也尝试过不同的java代码:

    for (int i = 0; i < pdpComparisonAdapter.getCount(); i++) {
        final View item = pdpComparisonAdapter.getView(i, null, null);

        item.setLayoutParams(new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT));
        View oldView = pdpComparisonsLinearLayout.getChildAt(i);
        pdpComparisonsLinearLayout.removeView(oldView);
        pdpComparisonsLinearLayout.addView(item,i);
        pdpComparisonsLinearLayout.getChildAt(i).setVisibility(View.VISIBLE);
    }
    pdpComparisonsLinearLayout.invalidate();

0 个答案:

没有答案