我想为用户提供以下不同Android版本的小部件设置:
即。 我想在Gingerbread 上为用户提供更多小部件,因为我们无法调整它们的大小。
android:resizeMode="horizontal|vertical"
,这将在2.3上被忽略。这不会破坏小部件xml\
& xml-v12
。 但是第二个选项只允许xml\
中的资源被替换,如果它们在xml-v12\
中重新声明。
有没有办法在以后的API版本中删除资源,而不是替换它们?
(注意:根据@CommonsWare,最好在默认情况下启用两个小部件,并在3.1 +上首次运行应用程序时禁用小部件)
答案 0 :(得分:0)
这个问题类似于:Hide app widget depending on API level(我在JGFI时无法找到......)
下面提供的答案摘要,我认为最好。
The accepted answer基本上是使用我上面描述的解决方法。他建议的一个增强功能是在3.1之前启用两者,并且仅在应用程序运行时禁用并检测到3.1 +。
这是因为3.1要求在用户添加小部件之前运行Activity
。 3.0没有这样的要求。这样做意味着3.1之前的用户总是看到两个小部件,而3.1+用户看不到这两个小部件。
A better answer ,imho,由@xbakesx提供。
他的建议是定义用于启用或禁用XML中小部件的布尔资源:
在/res/values/attrs.xml
:
<resources>
<bool name="is_pre_api_11">true</bool>
<bool name="is_post_api_11">false</bool>
</resources>
然后在/res/values-v11/attrs.xml
:
<resources>
<bool name="is_pre_api_11">false</bool>
<bool name="is_post_api_11">true</bool>
</resources>
使用这些定义的布尔资源在AndroidManifest.xml
中启用相应的窗口小部件:
<receiver
android:label="@string/app_widget_resizeable"
android:enabled="@bool/is_post_api_11">
<!-- App Widget Stuff Here -->
</receiver>