Android 小部件宽度 - 在所有设备上匹配父级
Posted
技术标签:
【中文标题】Android 小部件宽度 - 在所有设备上匹配父级【英文标题】:Android widget width - match parent on all devices 【发布时间】:2020-02-20 16:58:48 【问题描述】:我有包含以下信息的小部件:
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="328dp"
android:minHeight="56dp"
android:updatePeriodMillis="1000000"
android:initialLayout="@layout/home_widget"
android:previewImage="@drawable/widget_preview"
android:resizeMode="horizontal"
android:widgetCategory="home_screen">
</appwidget-provider>
布局(不必放在这里)在我的设备上看起来不错,但我发现该小部件不适用于较小的屏幕。有人可以帮我解决这个问题吗?我不想在较小的设备上显示这个小部件,而是想改变布局(也许为它创建另一个 xml 布局)。我尝试将minWidth
设置为尺寸,但由于我已精确定位所有小部件元素并调整其大小,因此这种方法会削减小部件。感谢您的帮助。
【问题讨论】:
【参考方案1】:所有设备的屏幕密度都不相同,因此最好的解决方案是引入ssp
和sdp
而不是所有设备都固定的dp
ssp
用于将大小设置为文本,@987654321 @ 用于布局。
https://github.com/intuit/sdp
【讨论】:
请提供示例。【参考方案2】:因为我们使用不同的屏幕尺寸和不同的屏幕密度来解决这个问题,不要使用 dp 或 sp 而不是使用此库中提供的 sdp 或 ssp https://github.com/intuit/sdp
这让你的空间前置屏幕响应
【讨论】:
【参考方案3】:如上所述,不同手机的屏幕尺寸不同,因此当使用固定尺寸值(例如328dp
)时,您的布局可能无法响应所有设备。
纳曼的答案对你有用,你可以使用这样的东西:
<view
android:layout_
android: />
但您也可以使用ConstraintLayout 告诉您的视图如何使用百分比在屏幕上展开,如下所示:
<view
android:layout_
android:layout_
app:layout_constraintHeight_percent="0.2"
app:layout_constraintWidth_percent="0.3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
使用此解决方案,您的视图将等于屏幕宽度的30%
,其高度的20%
,并将保持对所有屏幕尺寸的响应。
【讨论】:
【参考方案4】:如果您希望小部件宽度匹配作为父级,那么您可以使用android:layout_width="match_parent"
match_parent
将宽度/高度定义为父匹配,不需要定义静态尺寸。它是根据父母的宽度调整宽度。
我希望它对你有用。
【讨论】:
不能在android:minWidth
中使用match_parent
。
如果您将 android:layout_width 设置为“match_parent”,那么“match_parent”将覆盖 android:minWidth 设置
不能在appwidget-provider
中设置layout_width
。
好的,那么您可以使用appwidget-provider
中的android:minResizeWidth
属性。根据小设备宽度定义android:minResizeWidth
,这样widget在小设备上也会很好看。以上是关于Android 小部件宽度 - 在所有设备上匹配父级的主要内容,如果未能解决你的问题,请参考以下文章
Android Image Cropper Library Image 没有在宽度和高度上匹配父级