0

我正在以编程方式创建线性布局,但由于某种原因,我只能看到第一个视图。我可以看到正在创建其他视图的空间,并且正在正确创建该空间。例如,它具有垂直方向并拥有 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();
4

0 回答 0