См. Обновление выше, в котором упоминается ADT 0.9.7 - это в основном решает эту проблему.
я есть два проекта Android, «библиотечный проект», содержащий пользовательский макет, и «проект приложения», содержащий приложение, которое использует макет.
Кажется, все работает нормально, за исключением того, что редактор визуального макета создает исключение ClassNotFoundException (которое, как я полагаю, является ошибкой в плагине), но когда я пытаюсь начать использовать атрибуты, определенные для пользовательского макета в XML, я больше не могу строить. Это; это работает:
<?xml version="1.0" encoding="utf-8"?>
<se.fnord.android.layout.PredicateLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="asdfasdf"
/>
</se.fnord.android.layout.PredicateLayout>
Принимая во внимание, что это не:
<?xml version="1.0" encoding="utf-8"?>
<se.fnord.android.layout.PredicateLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fnord="http://schemas.android.com/apk/res/se.fnord.android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
fnord:layout_horizontalSpacing="1px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="asdfasdf"
/>
</se.fnord.android.layout.PredicateLayout>
Сборка завершается с сообщением от aapt:
ОШИБКА Не найден идентификатор ресурса для атрибута layout_horizontSpacing в пакете se.fnord.android.
Идентификатор ресурса существует в R-файле, а файл attrs.xml содержит проект библиотеки, и если я добавлю код макета и ресурсы непосредственно в проект приложения, все будет хорошо. Атрибут layout_horizontSpacing (и layout_verticalSpacing) - это пользовательский атрибут, используемый в классе PredicateLayout.LayoutParam для указания расстояния до следующего виджета.
До сих пор я пробовал стандартные способы затмения, указав ссылки на проекты и построив зависимости пути проекта. Мне также сказали попробовать тег в манифесте приложения, который не помог.
Итак, что мне нужно сделать, чтобы ссылки в xml-файле работали?
Я не знаю, уместно ли это, но манифест «библиотеки» выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="se.fnord.android"
android:versionCode="1" android:versionName="1.0.0">
</manifest>
«Приложение» проявляется так:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="se.fnord.appname"
android:versionCode="1" android:versionName="1.0.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AppName"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
('PredicateLayout', кстати, является очищенной версиейэто).