元素形状没有必需的属性 android:layout_height

Posted

技术标签:

【中文标题】元素形状没有必需的属性 android:layout_height【英文标题】:Element shape doesn't have required attribute android:layout_height 【发布时间】:2015-10-23 11:33:00 【问题描述】:

我正在使用一个形状元素作为视图的背景,就像SO question 一样。我正在使用 android Studio,它告诉我...

Element shape doesn't have required attribute android:layout_height

Element shape doesn't have required attribute 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_ android:layout_/>
<corners android:radius="10dip"/>
<padding android:left="0dip" android:right="0dip" android:top="0dip" android:bottom="0dip"/>

</shape>

所以基本上我的问题是:如果形状在技术上不需要这些属性,为什么会出现这个错误?如何告诉 android 停止将其标记为错误或如何避免?

谢谢。

已解决:原因是它不在 drawable 文件夹中。

编辑:是的,我知道笔画部分不正确。

【问题讨论】:

【参考方案1】:

显示错误的原因是它不在drawable 文件夹中。 (当我在拼写错误后重命名drawable 文件夹时,它会自动移动到layout。)

【讨论】:

【参考方案2】:

这是一个形状应该是什么样子的示例:

<?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:
    android:
    />
<stroke
    android:
    android:color="#ADD8E6"
    />

</shape>

【讨论】:

感谢您的回答!但我仍然无法摆脱红色!也许这是Android Studio的东西? !Screenie here 编辑:好吧,我的错,由于某种原因,当我重命名可绘制文件夹时,layout_bg.xml 移动到了布局!【参考方案3】:

首先你的可绘制 XML 是不正确的。您不能只使用您喜欢的属性并期望它起作用,例如您的&lt;stroke&gt; 具有android:layout_widthandroid:layout_height,这对&lt;stroke&gt; 没有意义并且不受支持。虽然它也是android:width,但这是不同的width,与layout_width 没有任何共同之处。 Docs are here 并包含所有支持的属性。

【讨论】:

这与错误无关,因为即使在使用技术上正确的宽度和高度属性后我仍然得到它(复制您上面的答案提供的代码)。

以上是关于元素形状没有必需的属性 android:layout_height的主要内容,如果未能解决你的问题,请参考以下文章

元素链接缺少必需的属性属性

使用自定义视图的自定义属性传入布局资源

如何向动态创建的 (C#) 元素添加“必需”属性?

列表视图元素高度[重复]

PropTypes形状被标记为必需

在XSD中,当可选的父元素出现时,它的子元素是必需的吗?