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

Posted

技术标签:

【中文标题】Android L 忽略形状作为可绘制背景【英文标题】:Android L is ignoring shapes as drawable background 【发布时间】:2014-06-26 22:47:29 【问题描述】:

我正在我的 Nexus 5 上测试 android L Preview。我的应用出现问题。

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

android:background="@drawable/rounded_textview"

而“rounded_textview”只是形状。它在

<?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 Developer Preview 错误跟踪器上报告,并有望在 Android L 最终版本之前得到修复:code.google.com/p/android-developer-preview/issues/… 【参考方案1】:

我发现将形状包装在选择器和项目标签中可以使其工作

<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>

【讨论】:

是的。这解决了我的问题。 感谢您的解决方法,但我仍然希望 Google 能够在 Android L 正式发布之前解决此问题。有没有人在官方的 Android 错误跟踪器上报告过这个? 这适用于纯色形状:) 但是包裹在选择器中对渐变形状没有影响:/ 如果所有角的半径都相同,则可以简单地使用 android:radius="3dp"。它适用于 Android L。 显然,这已在今天更新的 Nexus 5 Developer 图片中得到修复!【参考方案2】:

只使用 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>

【讨论】:

是的。但这只是一个例子。我想为每个角落使用不同的半径。但是下面的答案对我来说是有效的。把你的东西放在 .

以上是关于Android L 忽略形状作为可绘制背景的主要内容,如果未能解决你的问题,请参考以下文章

防止形状可绘制笔划的部分重叠

如何将可绘制的形状与图像一起使用?

具有不同角半径的可绘制形状背景的布局上的标高

如何为我在 Android 中用作背景的可绘制对象添加圆角?

如何在android中改变可绘制形状的颜色

如何在 Android 中使用 XML 作为可绘制对象创建自定义形状?