Je suis nouveau sur le développement Android, et j'ai du mal à travailler sur quelque chose. Je veux créer une vue composite (appelée SkillDiceGroup) d'un TextView, EditText et SkillDiceButton (qui est une extension de la classe Button). Je l'ai travail lors de la déclaration de mon SkillDiceGroup code pur, et de mettre cela dans ma mise en page XML:Android Composite XML View
<com.jeremybush.d20.SkillDiceGroup android:id="@+id/skillDiceTest"
android:title="Foobar!"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.jeremybush.d20.SkillDiceGroup>
Et je ce code:
public class SkillDiceGroup extends LinearLayout
{
// The View components
private TextView mTitle;
private EditText mSkill;
private SkillDiceButton mDice;
public SkillDiceGroup(Context context, AttributeSet attrs)
{
super(context);
this.setOrientation(HORIZONTAL);
mTitle = new TextView(context);
mTitle.setText("foobar");
addView(mTitle, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT
));
mSkill = new EditText(context);
addView(mSkill, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT
));
mDice = new SkillDiceButton(context, attrs);
mDice.setText("d20");
addView(mDice, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT
));
}
private class SkillDiceButton extends DiceButton
{
public SkillDiceButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void onClick(View view)
{
modifier = Integer.parseInt(mSkill.getText().toString());
super.onClick(view);
}
}
}
Cela fonctionne comme je le veux, mais je tiens à déclarer les trois éléments dans la vue xml de leur propre chef. Comment puis-je faire ceci?
J'ai lu la documentation, mais je ne suis pas sûr que cet exemple est tout à fait la même chose. Remarquez à la fin de mon code, j'ai l'affectation de modificateur où je fais référence à la variable mSkill. En raison de la logique dont j'ai besoin, je ne pense pas que votre exemple soit une traduction directe. Je pourrais être (et probablement suis) mal cependant. – zombor
Toute logique doit être dans votre classe d'activité, pas votre classe d'affichage. Vous pouvez accéder aux éléments de votre mise en page par identifiant si vous souhaitez afficher leur texte ou ajouter des clics d'écoute. Il pourrait vous aider à travailler sur l'un des exemples complets, comme le didacticiel sur le bloc-notes: http://developer.android.com/guide/tutorials/notepad/index.html, pour voir comment tout est censé s'intégrer. –
C'est la bonne façon de procéder, si vos vues personnalisées ont besoin de leurs propres attributs supplémentaires, vous pouvez également ajouter vos propres xmlns. Le widget du panneau dans ce projet a un exemple de comment ajouter vos propres attributs. http://code.google.com/p/android-misc-widgets/ vous pouvez également utiliser findViewById pour obtenir une référence à vos vues personnalisées dans votre activité et définir manuellement des attributs supplémentaires. Aucune des deux solutions ne serait erronée. – schwiz