Android错误:您必须提供layout_width属性

时间:2012-03-02 14:55:52

标签: android xml layout relativelayout

很抱歉,因为我的标题与StackOverFlow上的许多其他人类似,但这些解决方案都不符合我的问题。

我正在设计布局使用Relative Layout。在代码视图中进行设计之后,当我更改为图形视图时,Eclipse会注意到:

  

您必须提供layout_width属性。

     

您必须提供layout_height属性。

。当我运行这个程序时,会注意到LogCat中的错误

  

引起:java.lang.RuntimeException:二进制XML文件行#2:你   必须提供layout_width属性。

这是我的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView
        android:id="@+id/contact_name"
        android:text="Sam"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:textSize="20dp"/>

    <TextView
        android:id="@+id/contact_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:text="39256493"
        android:layout_below="@+id/contact_name"
        android:layout_alignLeft="@+id/contact_name"
        android:layout_marginTop="5dp"/>        

</RelativeLayout>

4 个答案:

答案 0 :(得分:13)

您的xmlns行应为xmlns:android="http://schemas.android.com/apk/res/android"。 这可能会解决你的问题。

修改

http://developer.android.com/guide/topics/manifest/manifest-element.html中引用Google:

  

xmlns:android定义Android命名空间。

     

此属性应该   始终设置为“http://schemas.android.com/apk/res/android”。

当您使用XML文件(如您正在使用的布局文件)时,您可以在同一文件中使用的属性由架构定义。

xmlns是“XML命名空间”的缩写。您在XML中定义了关键字“android:”的命名空间,这就是为什么您需要在开头用“android:”声明所有属性,例如android:layout_heightandroid:layout_width。 / p>

命名空间应该指向一个有效的模式,该模式应该指向包含该精确模式的URL。如果URL未指向有效的架构,则无法识别您的XML属性,这就是您遇到的问题。

我希望你能理解我的解释。

如果您想了解有关XML命名空间和模式的更多信息,我可以直接指向W3Schools和Wikipedia:http://www.w3schools.com/xml/xml_namespaces.asphttp://en.wikipedia.org/wiki/XML_schema

答案 1 :(得分:2)

这可能无关紧要,但名称空间标记引起了我的注意,因为the usual one是:

xmlns:android="http://schemas.android.com/apk/res/android"

答案 2 :(得分:1)

你应该换行:xmlns:android="http://schemas.android.com 行:xmlns:android="http://schemas.android.com/apk/res/android

我遇到了这个错误而且很痛苦。但我无法解释原因。

希望它适合你:)

答案 3 :(得分:0)

你能尝试做项目&gt;清洁。如果这不起作用,请尝试使用match_parent更改相对布局的参数。