元素形状缺少必需的属性android:layout_height。

7
我正在使用一个形状元素作为视图的背景,参考了这个SO问题。我使用的是Android Studio,它告诉我...

元素形状缺少必需属性android:layout_height

元素形状缺少必需属性android:layout_width

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="@color/darkBrown"/>
<stroke android:layout_width="match_parent" android:layout_height="match_parent"/>
<corners android:radius="10dip"/>
<padding android:left="0dip" android:right="0dip" android:top="0dip" android:bottom="0dip"/>

</shape>

基本上我的问题是:如果形状技术上不需要这些属性,为什么会出现此错误?我怎样才能告诉安卓停止将其标记为错误或者如何避免它?
谢谢。
已解决:原因是因为它不在drawable文件夹中。
编辑:是的,我知道描边部分是不正确的。
3个回答

27
错误显示的原因是由于它不在 drawable 文件夹内。(当我更正 drawable 文件夹的名称时,它自动移动到了 layout 文件夹中。)

1
以下是一个形状的示例:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners
    android:radius="14dp"
    />
<solid
    android:color="#ADD8E6"
    />
<padding
    android:left="0dp"
    android:top="0dp"
    android:right="0dp"
    android:bottom="0dp"
    />
<size
    android:width="100dp"
    android:height="60dp"
    />
<stroke
    android:width="3dp"
    android:color="#ADD8E6"
    />

</shape>

谢谢你的回答!但是我还是无法摆脱这个红色!也许这是Android Studio的问题?屏幕截图在这里编辑:好吧,我的错,由于我重命名了可绘制文件夹,所以layout_bg.xml移动到了layout中! - Lorenz

0

你的可绘制XML本身就不正确。你不能随意使用属性并期望它能正常工作,例如你的<stroke>android:layout_widthandroid:layout_height,这对于<stroke>来说没有意义,也不被支持。它还有android:width,但这是不同的width,与layout_width没有任何关系。文档在这里,包括所有支持的属性。


这与错误无关,因为即使我使用了技术上正确的宽度和高度属性(复制了您上面答案中提供的代码),我仍然会遇到这个错误。 - Lorenz

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