Android: библиотечные проекты и стильные ресурсы - PullRequest
3 голосов
/ 22 декабря 2010

У меня есть приложение, которое я сейчас хочу разделить на части в библиотечном проекте, чтобы я мог повторно использовать его в нескольких других местах. Среди того, что используется повторно, есть пользовательское представление, которое использует код из этого ответа (/1359960/vertikalnaya-povernutaya-metka-v-android) с некоторыми изменениями, которые я сделал для него. В любом случае, настраиваемые ресурсы не работают должным образом. Attr.xml выглядит так :

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <declare-styleable name="VerticalTextView">
        <attr name="text" format="string" />
        <attr name="textColor" format="color" />
        <attr name="textSize" format="dimension" />
        <attr name="rotateLeft" format="boolean" />
    </declare-styleable>
</resources>

и на него есть ссылка в файле макета в проекте библиотеки. Я получаю следующую ошибку в Eclipse при попытке компилировать основной проект:

[2010-12-20 23:29:38 - MyApp] C: \ Library \ res \ layout \ main.xml: 124: ошибка: не найден идентификатор ресурса для атрибута 'text' в пакете 'com.mydomain. MyLibrary '

Я озадачен. Я перепробовал все, что мог придумать, чтобы заставить это работать, и я просто не нашел волшебную комбинацию. Как сделать так, чтобы стилизованные ресурсы работали внутри библиотечного проекта?

Ответы [ 2 ]

6 голосов
/ 26 сентября 2012

Проблема была исправлена ​​в ADT 17: для использования пользовательских стилей, определенных в проекте библиотеки, необходимо использовать пространство имен http://schemas.android.com/apk/res-auto, поэтому, учитывая пример из вопроса:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto" ... >
    ...
    <com.foo.bar.VerticalTextView
        custom:textColor="#cafebabe"
        custom:rotateLeft="true"
        ... >
1 голос
/ 22 декабря 2010

Я потерпел неудачу во всех попытках заставить это работать в пакете библиотеки ранее в этом месяце и в конечном счете сдался.Чтобы исправить ситуацию, я просто добавил исходные файлы как «связанные» (все еще внешние по отношению к проекту и совместно используемые), и это работает для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...