Comment créer un simple Affichage personnalisé?
Je voudrais créer un personnalisé View
sur Android. J'ai essayé de faire aussi simple que possible et créé un presque vide de classe MyView
et l'a utilisé dans mon LinearLayout
mais l'application ne parvient pas à démarrer avec "Force Close". Comment puis-je faire une simple coutume View
? Selon La Construction De Composants Personnalisés la View
obtient la taille 100x100 si je ne la supplante pas onMeasure()
.
public class MyView extends View {
public MyView(Context context) {
super(context);
}
}
Et je l'utilise dans un LinearLayout
avec:
<view
class="com.example.MyView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.0" />
Ce que je fais mal?
Si j'utilise le constructeur qui itemon suggérer et de l'appel correspondant à la super-classe. Ensuite, la "Force Close" a disparu, mais mon LinearLayout
est cassé, les composants après MyView
n'est pas montré.
Voici mon main.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.0"
android:background="#f00"
android:text="Hello"
/>
<view
class="com.example.MyView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.0"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.0"
android:background="#00f"
android:text="World"
/>
</LinearLayout>
J'ai similaires besoins.. avez-vous obtenu ce que vous avez besoin . .partager du code plz
OriginalL'auteur Jonas | 2010-12-14
Vous devez vous connecter pour publier un commentaire.
peut-être vous pouvez définir un autre constructeur méthode comme ceci:
android cadre va essayer de construire l'INTERFACE utilisateur avec votre point de vue à partir du constructeur ci-dessus.
LinearLayout
est cassé, le composant une fois n'est pas montré.J'ai dû remplacer
onMeasure()
trop. Maintenant il fonctionne très bien.OriginalL'auteur itemon
L'Android Developer Guide a une section appelée la Construction de Composants Personnalisés. Malheureusement, la discussion des attributs XML ne couvre que de déclarer le contrôle à l'intérieur du fichier de mise en page et pas vraiment de la manipulation de la valeurs à l'intérieur de la classe d'initialisation. Les étapes sont comme suit:
Déclarer des attributs dans values\attrs.xml
Avis l'utilisation d'un nom sans le déclarer-styleable tag. Non-standard android attributs comme extraInformation ont besoin d'avoir leur type déclaré. Tags déclaré dans la super-classe sera disponible dans les sous-classes sans avoir à être redéclarée.
Créer constructeurs
Puisqu'il y a deux constructeurs qui utilisent un AttributeSet pour l'initialisation, il est commode de créer une méthode d'initialisation pour les constructeurs de faire appel.
R. styleable.MyCustomView est générée automatiquement int[] ressources où chaque élément est l'ID d'un attribut. Les attributs sont générés pour chaque propriété dans le fichier XML en ajoutant le nom de l'attribut le nom de l'élément. Les attributs peuvent être récupérées à partir de la TypedArray à l'aide de diverses fonctions obtenir. Si l'attribut n'est pas défini dans le fichier XML, la valeur null est retournée. Sauf, bien sûr, si le type de retour est un primitif, auquel cas le second argument est renvoyé.
Si vous ne voulez pas de récupérer tous les attributs, il est possible de créer ce tableau manuellement.L'ID pour android standard attributs sont inclus dans android.R.attr, tandis que les attributs de ce projet sont dans R. attr.
Veuillez noter que vous ne devriez pas utiliser quoi que ce soit sur android.R.styleable, que par ce fil, il peut changer dans l'avenir. Il est encore dans la documentation comme étant à la vue de tous ces constantes dans le est utile.
L'utiliser dans une mise en page des fichiers tels que des layout\main.xml
Inclure la déclaration d'espace de noms
dans la partie supérieure de l'élément xml.
De référence de la vue personnalisée à l'aide du nom complet.
Si vous voulez un exemple complet, regarder le android étiquette de vue de l'échantillon.
LabelView.java
custom_view_1.xml
C'est contenue dans un LinearLayout avec un espace de noms d'attribut:
OriginalL'auteur Jai Agarwal