我正在尝试使用 HorizontalScrollView 实现水平 ListView 并在代码中添加“项目”。添加项目工作正常。现在我希望每个项目都是 ScrollView 宽度的 1/7,这样我就可以在不滚动的情况下准确显示 7 个项目。我想不出一种方法来获取 HorizontalScrollView 的宽度。
我的 XML 如下所示:
<HorizontalScrollView
android:id="@+id/information_popup_dialog_listScrollView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="7" >
<LinearLayout
android:id="@+id/information_popup_dialog_listParent"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
我添加一个这样的项目:
LinearLayout listContainer = (LinearLayout) view
.findViewById(R.id.information_popup_dialog_listParent);
LinearLayout listItem = (LinearLayout) inflater.inflate(
R.layout.information_popup_dialog_list_item, listContainer,
false);
listItem.setLayoutParams(new LinearLayout.LayoutParams(
width, LayoutParams.MATCH_PARENT));
listContainer.addView(listItem);
当我使用 measure() 获取 ScrollView 的宽度时,我得到的是总宽度,而不是可见宽度。所以它随着我添加的每一个项目而不断增长。
HorizontalScrollView scrollView = (HorizontalScrollView) view
.findViewById(R.id.information_popup_dialog_listScrollView);
scrollView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
System.out.println("Width: " + scrollView.getMeasuredWidth());
我使用 .getLayoutParams().width / getWidth() 尝试了不同的方法,都返回 0。有没有办法做到这一点?我在 DialogFragment 的 onCreateView() 方法中完成所有这些工作。