Android L忽略了形状作为可绘制背景。

12

我正在我的Nexus 5上测试Android L预览版,我的应用程序遇到了问题。

我有一些设置有背景的TextView:

android:background="@drawable/rounded_textview"

而“rounded_textview”只是一个形状,它在API19及以下的版本中运行良好。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="3dp">
<solid android:color="#999999"/>
<corners
 android:bottomRightRadius="2dp"
 android:bottomLeftRadius="2dp"
 android:topLeftRadius="2dp"
 android:topRightRadius="2dp"/>
</shape>
在Android L开发者预览版中,背景被忽略了。我所有的TextView都是透明的。有什么办法可以解决吗?

在Android L开发者预览版中,背景被忽略了。我所有的TextView都是透明的。有什么办法可以解决吗?


这个 bug 已经在 Android 开发者预览版的 bug 跟踪器上报告了,希望在 Android L 的最终发布之前能够修复: https://code.google.com/p/android-developer-preview/issues/detail?id=177 - BladeCoder
2个回答

36

我发现将形状包裹在选择器和项标记中使其起作用。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">

            <solid android:color="@color/gray" />

            <corners
                android:bottomLeftRadius="3dp"
                android:topRightRadius="3dp"
                android:topLeftRadius="3dp"
                android:bottomRightRadius="3dp" />

        </shape>
    </item>
</selector>

是的,这解决了我的问题。 - adek
2
谢谢你提供的解决方法,但我仍然希望在Android L正式发布之前,Google能够修复这个问题。是否已经有人在官方的Android错误跟踪器上报告了这个问题? - BladeCoder
这对于一个纯色形状有效 :) 但是将其包装在选择器中对渐变形状没有影响 :/ - J_Sizzle
2
如果所有角落的半径相同,您可以简单地使用android:radius="3dp"。它适用于Android L。 - Elyess Abouda
1
显然,这个问题已经在今天更新的Nexus 5开发者镜像中得到了修复! - gMale

0

只需使用android:radius,而不是使用每个角落的选项。 我曾经遇到过同样的问题,但我能够用这种方式解决问题。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="3dp">
<solid android:color="#999999"/>
  <corners android:radius="2dp"/>
</shape>

是的。但那只是一个例子。我想为每个角使用不同的半径。但下面的答案在我的情况下有效。将您的内容放入<selector>中。 - adek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接