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】:

所有设备的屏幕密度都不相同,因此最好的解决方案是引入sspsdp 而不是所有设备都固定的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 没有在宽度和高度上匹配父级

Android:如何使用 ConstraintLayout 在另一个小部件上显示一个小部件?

如何设置自定义小部件的背景颜色和边框宽度?

颤振让孩子在列内匹配另一个孩子的宽度

设计 Android 小部件的宽度和高度

无法为 Android 4.0.4 设备上的小部件启动接收器崩溃