如何解决Android:窗口小部件占用太多空间
|| 我的小部件尺寸遇到一个奇怪的问题。 我决定开发一个支持ldpi,mdpi,large-mdpi和hdpi屏幕的简单小部件。 首先,我创建了xml / widget.xml,其中定义了以下内容:<appwidget-provider
xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:minHeight=\"146dip\"
android:minWidth=\"220dip\"
android:updatePeriodMillis=\"0\"
android:initialLayout=\"@layout/widget\"/>
因此,我希望所有支持的屏幕的小部件都占用3x2的单元格。
然后,我设计了几种布局,每种布局分别用于ldpi,mdpi,large-mdpi和hdpi-其中:
<RelativeLayout
xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:id=\"@+id/Widget\"
android:layout_width=\"fill_parent\"
android:layout_height=\"fill_parent\">
...
</RelativeLayout>
因此,我希望小部件的大小适合所有屏幕的3x2单元,而不是更多,更少。
但是目前,当我在模拟器(以及真实设备)上运行它时,我看到我的小部件需要
所有支持屏幕的屏幕都超过一半-如果是4x3单元,则为
说最大大小为4x4单元(如此处所述:
http://developer.android.com/guide/practices/ui_guidelines/widget_design.html#sizes)。
即使我将在小部件中定义确切的layout_width和layout_height
浸入式布局仍然会占用4x3的单元格,只是它的可见部分
将具有另一个尺寸。
解决方法
好吧,看起来模拟器并不总是刷新我的应用程序,这就是为什么我看到旧尺寸而不是新尺寸的原因。我的朋友还说,如果使用startActivityForResult,模拟器通常不会更新应用。因此,在这种情况下,最好手动重新启动小部件。希望对其他人有所帮助:)
,来自http://developer.android.com/guide/topics/appwidgets/index.html
根据经验,由于主屏幕的布局方向(以及像元大小)可以更改,因此对于像元的高度和宽度,您应该假定最坏情况下的像元大小为74像素。但是,必须从最终尺寸中减去2,以解决像素计数中发生的任何整数舍入误差。要找到与密度无关的像素(dp)的最小宽度和高度,请使用以下公式:
(单元数* 74)-2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。