5 votes

Android : vue personnalisée à partir d'une mise en page gonflée

Je crée ma propre mise en page en me basant sur RelativeLayout comme une classe dans le code

J'ai les bases de la mise en page définies en XML. R.layout.menu_layout (style, dessinable pour l'arrière-plan, la marge, la hauteur)

Si je n'avais pas besoin d'une classe, je ferais appel à l'inflateur pour le faire :

RelativeLayout menuLayout = (RelativeLayout)inflater.inflate(R.layout.menu_layout, root);

Mais j'aimerais appeler ma propre classe à la place.

MenuLayout menuLayout = new MenuLayout(myparams);

Puisque je dois créer une classe, je dois d'une manière ou d'une autre hériter de la classe R.layout.menu_layout dans le constructeur, comment puis-je le faire ? Je suppose qu'il n'y a pas de this.setLayout(res); o this.setResource(res); en vue. Je peux peut-être utiliser les deux autres paramètres dans le constructeur de la vue, mais je n'ai pas trouvé de tutoriel pour le faire.

2voto

Johannes Points 617
public class MenuLayout extends RelativeLayout {
    public MenuLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initView(context);
    }

    public MenuLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }

    public MenuLayout(Context context) {
        super(context);
        initView(context);
    }

    private void initView(Context context) {
        View view = LayoutInflater.from(context).inflate(R.layout.menu_layout, null);
        addView(view);
    }
}

vous pouvez maintenant utiliser

MenuLayout menuLayout = new MenuLayout(myparams);

vous pouvez modifier les constructeurs pour les paramètres je pense

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X