很抱歉,因为我的标题与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>
答案 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_height
或android:layout_width
。 / p>
命名空间应该指向一个有效的模式,该模式应该指向包含该精确模式的URL。如果URL未指向有效的架构,则无法识别您的XML属性,这就是您遇到的问题。
我希望你能理解我的解释。
如果您想了解有关XML命名空间和模式的更多信息,我可以直接指向W3Schools和Wikipedia:http://www.w3schools.com/xml/xml_namespaces.asp,http://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更改相对布局的参数。