Question

voici l'affaire.

Je regardais ce code sur l'extension d'un ImageView:

http://marakana.com/forums/android/examples/98.html

et je me demandais comment puis-je ajouter la nouvelle vue dans un fichier de mise en page XML existant, ainsi que d'autres points de vue.

déjà je l'ai fait dans ma principale disposition linéaire:

<FrameLayout android:id="@+id/FrameLayout01" android:layout_width="300dp" android:layout_height="300dp">
        <com.marakana.Rose android:layout_height="wrap_content" android:layout_width="wrap_content"/>

mais le problème est que cette façon la méthode onDraw ne soit pas appelé.

Quelqu'un peut-il proposer une solution pour cela? peut-être quelques exemples où vous combinez CustomViews avec la mise en page XML.

TNX.

Était-ce utile?

La solution 2

Je pense que je l'ai résolu. J'ai utilisé mon code dans le fichier main.xml et il fonctionne. la chose que je devais faire était de passer outre un nouveau constructeur de la classe d'accepter AttributesSet à côté du contexte comme paramètre puis utilisez findViewById (CustomViewName) pour faire référence à l'activité et utiliser les fonctions définies dans le CustomView.

Autres conseils

Avez-vous ajouté la définition à res / valeurs / attrs.xml

<declare-styleable name="Rose">
</declare-styleable>

Je ne sais pas si cela est nécessaire si vous ne pas ajouter un attribut xml ...

En outre, il aidais si vous avez publié le code com.marakana.Rose. À titre d'exemple, voici la déclaration de classe d'un composant de mon propre:

public class CalendarCell extends ImageButton implements OnTouchListener

onDraw:

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

et ceci est un extrait de ma mise en page xml:

<TableRow>
        <com.view.customcomponents.CalendarCell
            style="@style/NumericImageButton"
            android:id="@+id/calendar_row1_col1"

            android:background="@drawable/calendar_bg_selector" />

Je l'ai fait il y a quelque temps en suivant un tutoriel, mais je ne me souviens pas où. De plus, je pourrais manquer quelque chose. Google un peu et vous trouverez des ressources utiles.

edit: Je pense que ce sont les tutoriels que je suivais, bien que je devais mettre dans un certain travail pour enfin faire fonctionner:

officiel docs

AndDev.org

  

Pour permettre aux outils de développement Android pour interagir avec vous, au minimum, vous devez fournir un constructeur qui prend un objet Contexte et un AttributeSet en tant que paramètres. Ce constructeur permet layout editor to create and edit an instance of your view.

class PieChart extends View {
    public PieChart(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
}

Et les détails Réponse ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top