ScrollView 及其内容使用“wrap_content”。如何分配约束优先级?
Posted
技术标签:
【中文标题】ScrollView 及其内容使用“wrap_content”。如何分配约束优先级?【英文标题】:ScrollView and its content use 'wrap_content'. How to assign constraint priority? 【发布时间】:2020-11-07 13:50:37 【问题描述】:我需要一个水平的ScrollView
,固定高度为100dp
,动态内容为ImageViews。
目前我的 ScrollView 有一个水平的LinearLayout
和ImageView
s。 ImageViews 的宽度启用了wrap_content
,而所有它们的高度都在固定高度上。 ScrollView 本身的高度为wrap_content
。
如果 ScrollViews 的内容大于视图可以在不滚动的情况下显示的内容,则 ImageViews 图像将按比例缩小。 ImageViews layout_hight
根据其边界工作,但图像本身不是。
将scaleType
更改为其他内容无济于事。为 LinearLayout 设置固定宽度是可行的,但由于内容应该是动态的,所以这不是一个选项。这似乎是一个默认用例。这在xml
中不可能吗?
手动给定精确 ScrollView 宽度的示例:
视图看起来符合我的需要,但不允许动态内容。
wrap_content
上的宽度示例:
图像视图
ScrollView 代码如下:
<ScrollView
android:layout_
android:layout_
android:orientation="horizontal"
android:background="#CCCCFF">
<LinearLayout
android:layout_
android:layout_
android:background="#AAAAFF"
android:orientation="horizontal">
<ImageView
android:id="@+id/so1"
android:layout_
android:layout_
android:adjustViewBounds="true"
android:background="#FF0000"
android:scaleType="fitCenter"
android:src="@drawable/so" />
<Space
android:layout_
android:layout_ />
<ImageView
android:id="@+id/so2"
android:layout_
android:layout_
android:adjustViewBounds="true"
android:background="#FF0000"
android:scaleType="fitCenter"
android:src="@drawable/so" />
<Space
android:layout_
android:layout_ />
<ImageView
android:id="@+id/so3"
android:layout_
android:layout_
android:adjustViewBounds="true"
android:background="#FF0000"
android:scaleType="fitCenter"
android:src="@drawable/so" />
</LinearLayout>
</ScrollView>
【问题讨论】:
【参考方案1】:好的,这比我想象的要容易解决:
ScrollView
s 总是垂直的。 ScrollView 中没有方向属性。要获得水平 ScrollView,请改用 HorizontalScrollView
并放弃方向。
所以这个
<ScrollView
android:layout_
android:layout_
android:orientation="horizontal">
应该是:
<HorizontalScrollView
android:layout_
android:layout_>
【讨论】:
以上是关于ScrollView 及其内容使用“wrap_content”。如何分配约束优先级?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用AutoLayout(iOS / Xamarin.iOS)使ScrollView适合其内容?
SwiftUI - 如何获取 ScrollView 内容的大小(高度)
ScrollView 不使用包含 Android 中动态内容的 LinearLayout 滚动