2011-09-22 15 views
7

Acabo de crear la clase VibratingTextView. Tengo la intención de crear una biblioteca completa de widgets, así que quiero hacerlo de la manera correcta.(Vibrating TextView) Configurar atributos para vistas personalizadas

el XML para esta vista:

<sherif.android.textview.VibratingTextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:text="outToRight" > 
</sherif.android.textview.VibratingTextView> 

Aviso tiene android:orientation y android:text. Acepta los atributos de TextView y de LinearLayout. La clase en sí extends LinearLayout.

Mi problema está en el editor xml de eclipse. Cuando el usuario escribe android:, intellisense de eclipse le da al usuario las opciones disponibles en este espacio de nombres.

En mi caso, está dando los atributos de LinearLayout por lo que, por ejemplo, Text y TextSize no aparecen.

¿Hay alguna manera de hacer que aparezcan (utilizando el espacio de nombre android)?

Si no, ¿debería crear mi propio espacio de nombres con los atributos que defino? o hay una forma de importar los atributos de Android y hacerlos en los atributos de sherif?

Tenga en cuenta que estoy creando un TextView en el constructor de mi clase utilizando los atributos pasados. Está funcionando bien y todos los atributos de TextView se están configurando correctamente.

Como crearé muchos otros widgets, podría necesitar mi propio espacio de nombres, pero ¿cuál es la mejor práctica? Por ejemplo, quiero crear el atributo alwaysVibrate. Será algo así como sherif:alwaysVibrate="true". Quiero que mi biblioteca sea includable y eclipse para mostrar los atributos de mi espacio de nombres: uso de la forma habitual usando attr.xml?

Respuesta

2

Hace poco tuve el mismo problema. Aquí están mis declaraciones de atributos personalizados en attrs.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="NumberPicker"> 
     <attr name="rangeStart" format="integer|reference" /> 
     <attr name="rangeEnd" format="integer|reference" /> 
     <attr name="speed" format="integer|reference" /> 
     <attr name="current" format="integer|reference" /> 
     <attr name="android:orientation" /> 
    </declare-styleable> 
</resources> 

puede volver a utilizar los atributos android pero no se les puede enseñar a sugieren valores diferentes. De hecho, ni siquiera puedes enseñar eclipse para sugerir definiciones de atributos personalizados (al menos en esta fecha de publicación, me encantaría ver esa función en el futuro).

Todo lo demás que le gustaría saber sobre la definición de atributos personalizados está en la pregunta: Declaring a custom android UI element using XML.

+0

Por cierto: voto positivo de mi parte por el aspecto muy atractivo de su vista personalizada y su deseo de compartir eso con nosotros! – Knickedi

+0

+1 pero realmente odio las malas noticias: P! Espero que alguien tenga una solución. –

+0

¡Gracias por la recompensa aunque no respondí en el margen de tiempo de la recompensa! – Knickedi

Cuestiones relacionadas