Android пользовательский макет атрибута «ссылочный атрибут» формат? - PullRequest
6 голосов
/ 01 марта 2012

У меня есть пользовательское представление (которое расширяет группу просмотра), и я указал некоторые пользовательские атрибуты, определенные в attrs.xml ....

<declare-styleable name="datascope">
    <attr name="colcount" format="integer" />
    <attr name="titleheaderrows" format="integer" />
    <attr name="colheaderrows" format="integer" />
    <attr name="rowlayout" format="reference" />
</declare-styleable>

Целые числа, которые я могу подобрать, но последнее - rowlayout - я хочу использовать для ссылки на другой файл макета, который я буду раздувать по требованию. Но я не могу найти правильный способ выразить атрибут rowlayout в основном файле макета. Я пробовал:

lui:rowlayout="@layout/sensorvaluesdata">

но это не работает во время выполнения:

E / AndroidRuntime (22092): вызвано: java.lang.NumberFormatException: невозможно проанализировать 'res / layout / sensorvaluesdata.xml' как целое число

и

lui:rowlayout="?layout/sensorvaluesdata"

что не получается

E / AndroidRuntime (22341): вызвано: java.lang.NumberFormatException: невозможно проанализировать '? 2130903043' как целое число

Что интересно, потому что он, похоже, вставил туда идентификатор ресурса, но также вставил ? спереди.

Мои R.java файлы имеют разумную строку для sensorvaluesdata.

public static final class layout {

    public static final int sensorvaluesdata=0x7f030003;

}

как правильно это сделать?

(Я могу жестко запрограммировать информацию в исходный код Java, и она отлично работает ....

View vx = li.inflate(R.layout.sensorvaluesdata, this, false);

1 Ответ

5 голосов
/ 16 августа 2012

Просто чтобы добавить немного фона для кого-то еще.В коде используйте что-то вроде этого

LinearLayout ViewContainer=(LinearLayout) (LayoutInflater.from(context)).inflate(
    attributes.getResourceId(
        R.styleable.[styleableName]_[attributeName], 
        R.layout.[defaultValue]), 
    null);

В атрибутах xml под вашим настраиваемым именем ...

<attr name="layout" format="reference"/>
...