Comment utiliser la norme de l'attribut android:text dans mon affichage personnalisé?
J'ai écrit un vue personnalisée qui s'étend RelativeLayout
. De mon point de vue a du texte, donc je veux utiliser la norme android:text
sans la nécessité de spécifier un <declare-styleable>
et sans à l'aide d'un espace de noms personnalisé xmlns:xxx
chaque fois que j'utilise mon affichage personnalisé.
c'est le xml où j'utilise ma vue personnalisée:
<my.app.StatusBar
android:id="@+id/statusBar"
android:text="this is the title"/>
Comment puis-je obtenir la valeur de l'attribut? Je pense que je peux obtenir le android:attribut de texte avec
TypedArray a = context.obtainStyledAttributes(attrs, ???);
mais qu'est-ce que ???
dans ce cas (sans styleable dans attr.xml)?
- lire la documentation: developer.android.com/reference/android/content/...
- Pas très utile, pouvez-vous me donner quelque chose de plus? 🙂
- Juste omettre le 2e paramètre
- J'étais confus parce que mon attrs est AttributeSet et pas int[]
Vous devez vous connecter pour publier un commentaire.
utiliser ceci:
j'espère que vous avez une idée
getText(1)
sur leTypedArray
avec un simpleint
, l'inspection se plaint: "on Attend la ressource de type styleable". À l'aide degetText()
avec quelque chose commeR.styleable.MyCustomView_android_text
fonctionne cependant. Je suppose que Android Studio est devenu "intelligent"getText()
retour?MODIFIER
Une autre façon de faire (avec la spécification d'une déclaration-styleable mais ne pas avoir à déclarer un espace de noms personnalisé) est comme suit:
attrs.xml:
MyCustomView.java:
Cela semble être le générique Android manière d'extraire les attributs standard de vues personnalisées.
Au sein de l'API Android, ils utilisent un interne R. styleable classe pour extraire les attributs standard et ne semble pas offrir d'autres alternatives de l'aide de R. styleable pour extraire les attributs standard.
Post Original
Pour vous assurer d'obtenir tous les attributs de l'élément normal, vous devez utiliser la syntaxe suivante:
Si vous voulez des attributs à partir d'un autre composant standard il suffit de créer un autre TypedArray.
Voir http://developer.android.com/reference/android/R.styleable.html pour plus de détails disponibles TypedArrays pour les composants standard.
R.styleable.TextView
<attr name="android:text" />
cause du cancer du côlon 🙁android:orientation
dans un de mes projets. Cependant, vous devez vous assurer que vous utilisez le bon nom de l'attribut. La liste des noms valides est répertorié dans la l'attribut de référence.<attr name="android:text" format="string" />
et elle est toujours allé à l'erreur de compilation "android:text est déjà défini". Changer de<attr name="android:text" />
œuvres, OMG.format="string"
. C'est une limitation de l'ancienne version du plugin gradle. Surclasspath 'com.android.tools.build:gradle:2.3.3'
, il va se retrouver avec une erreur de compilation; Surclasspath 'com.android.tools.build:gradle:3.1.3'
, il compile bien.