6

que tienen una vista personalizada (que se extiende ViewGroup) y me han indicado algunos atributos personalizados definidos en attrs.xml ....¿Formato de atributo de referencia de atributo de diseño personalizado de 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> 

Los enteros que puedo bien recogida, pero el último - rowlayout - Quiero usar para referirme a un archivo de diseño adicional que inflaré según demanda. Pero no puedo encontrar la forma correcta de expresar el atributo rowlayout en el archivo de diseño principal. que he intentado:

lui:rowlayout="@layout/sensorvaluesdata"> 

pero esta falla en tiempo de ejecución:

E/Android Runtime (22092): Causado por: java.lang.NumberFormatException: no puede analizar 'res/layout/sensorvaluesdata. xml' como entero

y

lui:rowlayout="?layout/sensorvaluesdata" 

WHI ch falla

E/Android Runtime (22341): Causado por: java.lang.NumberFormatException: No se puede analizar como un número entero

cual es interesante 'porque parece que ha pegado el '2130903043?' ID de recurso allí, pero también tiene un ? en la parte frontal.

Mi R.java archivos tiene una línea de aspecto sensato para sensorvaluesdata.

public static final class layout { 

    public static final int sensorvaluesdata=0x7f030003; 

} 

¿cuál es la forma correcta de hacerlo?

(puedo codificar la información en la fuente de Java y funciona bien ....

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

Bueno, esto es extraño, lo intentó de nuevo en este momento y funciona todo OKAY. He revisado y todo parece idéntico, y había limpiado el proyecto varias veces mientras trabajaba en esto antes de la publicación original. Solo puedo suponer que Eclipse tuvo un momento tambaleante - gracias eclipse /) – pootle

Respuesta

5

sólo para añadir un poco más de fondo para otra persona. En utilice el código de algo como esto

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

En virtud de que los atributos XML nombre styleable ...

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