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