使用RemoteViews构建应用小部件,我使用一对TextView来创建切换样式按钮。
我在远程视图对象上使用此方法来动态更改每个TextView的背景(作为对click事件的响应 - 使用推荐的setPendingIntentTemplate + setOnClickFillInIntent方法连接,因为它在集合视图项中):
setInt(R.id.toggle_left, "setBackgroundResource",
R.drawable.widget_toggle_left_on)
setInt(R.id.toggle_right, "setBackgroundResource",
R.drawable.widget_toggle_right_off)
(这些调用来自适配器RemoteViewsService.RemoteViewsFactory" getViewAt"方法)
drawable只是一个简单的Shape(矩形),指定了纯色和角半径。 是的我知道Android文档中有关角落规范的内容: "每个角必须(最初)提供大于1的角半径,否则没有角是圆的。如果你想要特定的角不圆,那么解决方法是使用android:radius来设置一个大于1的默认角半径,但是然后覆盖每个角......"
e.g。在widget_toggle_left_on.xml中 -
<corners
android:radius="5dp"
android:bottomLeftRadius="5dp"
android:topLeftRadius="5dp"
android:bottomRightRadius="0dp"
android:topRightRadius="0dp"/>
除了Sony Xperia平板电脑之外,这一切在几台设备上运行良好(4.4.2,请注意运行此版本的其他设备没有问题)
切换按钮有时(似乎不是图案)会被错误地渲染,例如左侧和右侧切换按钮使用相同的&#34; solid&#34;颜色(&#34;左&#34;&#34;右&#34; drawables有&#34; off&#34;&#34; on&#34;有不同颜色的版本),即使代码输出建议没有错误。通常,切换按钮适用于几个连续的单击事件,但随后会拧紧。实际上,有两对切换按钮(TextViews),有时点击一对可以改变另一对的背景!
这样一个具体的背景我不希望任何人知道这里发生了什么(如果你更喜欢看到很多代码而道歉),但只是想知道是否有人看到类似设备特定的形状渲染怪异和/或任何猜测尝试某种工作?!感谢