我有一个带有3个ImageView的HorizontalScrollView。我需要有与屏幕宽度相同的图像。
你能帮我吗?
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<HorizontalScrollView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView android:id="@+id/image1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="false"
android:src="@drawable/placeholder"/>
<ImageView android:id="@+id/image2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/placeholder"/>
<ImageView android:id="@+id/image3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/placeholder"/>
</LinearLayout>
</HorizontalScrollView>
答案 0 :(得分:0)
在每个ImageView和您的LinearLayout,HorizontalScrollView
中更改为android:layout_width =“match_parent”答案 1 :(得分:0)
是的,我也很满意'Stanislav Parkhomenko'。如果您需要具有相同宽度的屏幕图像,则在HorizontalScrollView以及每个ImageView中使用android:layout_width =“match_parent”更改值。就是这样。
答案 2 :(得分:0)
因为屏幕宽度会因不同的设备而异,您可以通过以下方法之一来设置运行时的宽度。为了适当地获得屏幕宽度,我们可以使用ViewTreeObserver
。以下是我从您的布局派生的测试的xml文件:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/image1"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:background="@android:color/holo_red_light"/>
<ImageView
android:id="@+id/image2"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:background="@android:color/holo_blue_bright"/>
<ImageView
android:id="@+id/image3"
android:layout_width="wrap_content"
android:layout_height="200dp"
android:background="@android:color/holo_green_dark"/>
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
请注意,我将android:id="@+id/ll"
属性提供给包含ImageView
的布局。现在,对于Java代码,我们可以实现ViewTreeObserver
并在运行时相应地设置宽度:
final LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
final ViewTreeObserver viewTreeObserver = ll.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
ll.getViewTreeObserver().removeOnPreDrawListener(this);
int width = ll.getWidth();
View child;
LinearLayout.LayoutParams params;
for (int i = 0; i < ll.getChildCount(); i++) {
child = ll.getChildAt(i);
params = (LinearLayout.LayoutParams) child.getLayoutParams();
params.width = width;
child.setLayoutParams(params);
}
return false;
}
});
这应该这样做。如果您遇到任何问题,请告诉我。