Android应用小部件大小问题

时间:2013-02-28 16:55:52

标签: android android-widget

我在设计正在设计的主屏幕小部件的大小时遇到​​了一些问题。我已经阅读了sdk文档并做了一些搜索,但我并没有找到任何有用的东西。无论如何,我正在使用窗口小部件提供程序的onAppWidgetOptionsChanged方法来获取API 16以上设备上的窗口小部件大小,并且它在某些设备上报告不正确。它在Nexus S和Transformer Prime上正常运行,但它在我的S3上给出的值小于我从屏幕截图中测量的值。我已经解释了它以dp而不是像素报告的事实。我猜三星发射器增加了某种类型的保证金,但我找不到任何相关性。例如,当我使用2x2小部件时,onAppWidgetOptionsChanged报告154dp(~293px)宽度和193dp(~355px)高度,但我在Photoshop中测量了〜340px×420px。这是三星唯一的问题,还是我要在许多非香草平台上面对这个问题。代码是非常基本的,但我发布任何以防万一。

@Override
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) {
    int minWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
    int maxWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
    int minHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
    int maxHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);

    Log.i("WidgetProvider","Widget size changed");
    Log.i("WidgetProvider","minWidth: " + minWidth);
    Log.i("WidgetProvider","minHeight: " + minHeight);
    Log.i("WidgetProvider","maxWidth: " + maxWidth);
    Log.i("WidgetProvider","maxHeight: " + maxHeight);
}

我使用报告的大小在我的小部件更新服务中生成位图。我需要使用自定义位图,因为我想为我的小部件使用自定义字体和背景。在API 16以下的设备上,我只是将位图设置为widget Info xml中定义的minWidth和minHeight。在某些设备上,这会在窗口小部件周围留下比我更喜欢的填充,但图像没有失真。据我所知,没有办法在早期设备中获取小部件大小。另外,我不认为自定义字体可以在应用程序小部件的TextView中使用。它是否正确?我曾尝试将fitXY用于图像,但它在某些设备上看起来很糟糕。是否有更可预测的方法在窗口小部件上完成自定义背景和自定义字体?任何建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

看起来我有同样的问题。 Galaxy Note的小工具4 * 4。在AppWidget选项上更改返回426 * 384最大尺寸,但如果你在屏幕上看到高度超过宽度......