根据API级别使用不同的应用小部件布局

时间:2013-08-10 22:02:31

标签: android android-layout android-appwidget android-version

使用Activities时,您可以通过layout轻松选择onCreate()中要使用的setContentView()。但是我如何在app小部件上完成此操作?据我所知,应用程序小部件的布局由相应的AppWidgetProviderInfo.xml决定,这在运行时是不可配置的,是吗?

那么如何根据设备的Android版本选择特定的布局?

2 个答案:

答案 0 :(得分:0)

AppWidgetProviderInfo提供默认的初始布局,但您可以在为appwidget创建RemoteViews对象时在运行时指定布局。

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), 
    R.layout.layout_id);

将此与android.os.Build.VERSION.SDK_INT值的检查相结合,这应该可以让您到达目的地。

答案 1 :(得分:0)

执行此操作的最佳方法是在android中使用资源限定符,就像将字符串替换为不同的区域设置或维度以用于不同的屏幕大小一样。您可以通过查看http://developer.android.com/guide/topics/resources/providing-resources.html#table2

找到有关此功能的更多信息

您可以使用它在xml /目录中定义新的窗口小部件XML规范,或在布局/目录中定义替代布局。

它看起来像这样:

  • layout / widget_layout.xml (默认或最低API版本的布局)
  • layout_v11 / widget_layout.xml (用于API级别11的版本)

当您运行API 11或更高版本时,将使用layout_v11中的布局文件。

相关问题