我似乎无法找到有关我想要编码的小部件的以下问题的任何内容:
除了 Android 3.1 中引入的调整大小功能之外,我还希望我的小部件能够在 LauncherPro 或 ADWLauncher 等自定义启动器中调整大小。有没有一种方法可以定义我的小部件在调整大小后如何更改其布局?例如,对于 2x1,按钮 A 显示在左侧,而对于 3x3,按钮 A 显示在右侧。
另外,我希望它在由于屏幕旋转而导致小部件尺寸发生变化时改变其外观/布局(因为例如 3x1 在横向和纵向上具有不同的高度和宽度)。
任何提示都会有帮助。
多谢!
直到
从 Android 4.1 开始,可以使用 onAppWidgetOptionsChanged() 来确定调整大小和更改布局时小部件的大小。所以在你的 AppWidgetProvider 中:
@Override
public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle bundle) {
int minWidth = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH);
int maxWidth = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH);
int minHeight = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
int maxHeight = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT);
RemoteViews rv = null;
//Size of a 2x1 widget on a Nexus 4 (other screen densities will differ)
if(minWidth == 152 && maxWidth == 196 && minHeight == 58 && maxHeight == 84){
rv = new RemoteViews(context.getPackageName(), R.layout.widget2x1);
} else {
rv = new RemoteViews(context.getPackageName(), R.layout.widget);
}
...
/* Set some stuff in your layout here */
...
appWidgetManager.updateAppWidget(appWidgetId, rv);
}
问题是您需要找到每个屏幕密度/尺寸的最小/最大宽度和高度,以便知道何时将小部件调整到一定的大小以保证布局更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)