Ошибка Android: необходимо указать атрибут layout_width - PullRequest
7 голосов
/ 02 марта 2012

Извините, потому что мой заголовок похож на многие другие на 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 ]

13 голосов
/ 02 марта 2012

Ваша строка xmlns должна выглядеть как xmlns:android="http://schemas.android.com/apk/res/android".Возможно, это решит вашу проблему.

РЕДАКТИРОВАТЬ:

Цитировать Google в http://developer.android.com/guide/topics/manifest/manifest-element.html:

xmlns: android Определяет пространство имен Android.

Для этого атрибута всегда должно быть установлено значение "http://schemas.android.com/apk/res/android".

Когда вы используете XML-файл, такой как файлы макета, атрибуты, которые вы можете использовать внутри этого жеФайл определяется схемой.

xmlns - это сокращение от «пространства имен XML». Внутри XML вы определяете пространство имен ключевых слов «android:», и поэтому вам необходимо объявить все свои атрибуты с помощью «android: "в начале, например android:layout_height или android:layout_width.

Пространство имен должно указывать на допустимую схему, которая должна указывать на URL, содержащий эту точную схему. Если URL не соответствуетЕсли вы укажете правильную схему, ваши атрибуты XML не будут распознаны. Это была проблема, с которой вы столкнулись.

Надеюсь, вы могли понять мое объяснение.

Если вы хотите узнать больше оПространства имен и схемы XML, я могу ппрямо к W3Schools и Wikipedia: http://www.w3schools.com/xml/xml_namespaces.asp, http://en.wikipedia.org/wiki/XML_schema.

2 голосов
/ 02 марта 2012

Это может быть неактуально, но тег namespace привлек мое внимание, так как обычный :

xmlns:android="http://schemas.android.com/apk/res/android"
1 голос
/ 02 марта 2012

Вы должны изменить строку: xmlns:android="http://schemas.android.com на строку: xmlns:android="http://schemas.android.com/apk/res/android

Я столкнулся с этой ошибкой, и это больно.Но я не могу объяснить, почему.

Надеюсь, это сработает для вашего:)

0 голосов
/ 02 марта 2012

Не могли бы вы попробовать сделать проекты> чистыми. Если это не сработает, попробуйте изменить аргументы относительного макета с помощью match_parent.

...