J'ai créé d'une simple vue personnalisée qui contient un RelativeLayout
et un EditText
:Comment obtenir les attributs par défaut Android dans une vue personnalisée
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/edt_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
Aussi j'ai ajouté quelques attributs personnalisés dans res/values/attrs.xml
et je récupérer ces attributs mon constructeur de vue personnalisé et tout fonctionne bien.
Maintenant, je veux récupérer EditText
attributs par défaut dans ma vue personnalisée par exemple Je veux obtenir l'attribut android:text
dans ma vue personnalisée.
Ma classe de vue personnalisée (simplifié):
public class CustomEditText extends RelativeLayout {
private int panCount;
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.CustomEditText, 0, 0);
try {
this.panCount = typedArray.getInt(R.styleable.CustomEditText_panCount, 16);
} finally {
typedArray.recycle();
}
}
}
Comment puis-je faire sans redéclarant attribut texte res/values/attrs.xml
?
il est déroutant que vous n'utilisez pas votre vue en code XML ...! Êtes-vous sûr d'avoir posté le dernier code? Cochez cette réponse: https://stackoverflow.com/a/8090772/7134908 cela pourrait résoudre votre problème pour définir la valeur en XML et entrer dans Java vode –
Pourriez-vous ajouter votre fichier 'styleable' pour' CustomEditText'? – tynn
Duplication possible de [Comment obtenir des attributs avec l'espace de noms "android" dans TextView personnalisé] (https://stackoverflow.com/questions/26486791/how-to-get-attributes-with-namespace-android-in-custom-textview –