6

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

<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: Невозможно разобрать «Рез/макет/sensorvaluesdata. XML»как целое

и

lui:rowlayout="?layout/sensorvaluesdata" 

бе ч не удается

E/AndroidRuntime (22341): Вызванный: java.lang.NumberFormatException: невозможно разобрать как целое

Что интересно, «потому что, кажется, застрял '2130903043? Идентификатор ресурса, но застрял ? на передней панели.

My R.java Файлы имеют разумную перспективную линию для sensorvaluesdata.

Каков правильный путь для этого?

(я могу жестко закодировать информацию в источнике Java и работает отлично ....

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

Ну это странно, попробовал это снова только сейчас, и все это работает ОК. Я проверил назад, и все выглядит одинаково, и я несколько раз очищал проект, работая над ним до исходного сообщения. Я могу только предположить, что Eclipse имел шаткий момент - спасибо затмение /) – pootle

ответ

5

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

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

В XML атрибуты под вас styleable имя ...

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