2010-07-20 7 views
0

je voudrais créer un bouton personnalisé comme celui-ci:android bouton personnalisé

http://i77.photobucket.com/albums/j74/bertyhell/button.png?t=1279626910

mais cela ne fonctionne pas je dois montrer le texte sur les boutons avec le positionnement absolu par rapport à l'origine des boutons toutes les chaînes doivent être modifiables lors de l'exécution

mais le bouton ci-dessous peut être un bouton régulier

comment puis-je faire?

Si je crée un bouton en héritant de android.widget.button je dois dessiner le bouton entier moi-même?

Y at-il un moyen plus facile?

EDIT

ok j'ai essayé Hériter de disposition relative

comme ceci:

package be.smarttelecom.datacheck.views; 

    import android.content.Context; 
    import android.util.Log; 
    import android.widget.RelativeLayout; 
    import android.widget.TextView; 

    public class AlertButton extends RelativeLayout { 

     private TextView roomNumber; 

     public AlertButton(Context context, String roomNumber) { 
      super(context); 
      try{ 
      this.alertId = alertId; 
      // TODO Auto-generated constructor stub 
      this.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
        LayoutParams.WRAP_CONTENT)); 

      TextView room = new TextView(context); 
      room.setFocusable(false); 
      room.setText(R.string.room); 
      room.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
        LayoutParams.WRAP_CONTENT)); 

      this.roomNumber = new TextView(context); 
      this.roomNumber.setFocusable(false); 
      this.roomNumber.setId(R.id.roomNumber); 
      this.roomNumber.setTextSize(26); 
      this.roomNumber.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
        LayoutParams.WRAP_CONTENT)); 
      this.roomNumber.setText(roomNumber); 

      }catch(Exception ex){ 
       Log.i("test", "problem during construction of alert button: " + ex.getMessage()); 
      } 
     } 

     public void setRoomNumber(String number){ 
      roomNumber.setText(number); 
     } 

     public void setDescription(String description){ 
      this.description.setText(description); 
     } 
    } 

quand je l'ajoute comme ceci:

 TableRow row2 = new TableRow(this); 
     AlertButton alert = new AlertButton(this, "1","14","wc","krist"); 
     row2.addView(alert); 
     container.addView(row2, 0); 

je reçois un page vide et aucune erreur du tout

une idée de ce que j'ai mal fait?

comment est-ce que je mets les champs de texte sur certaines positions? les mettre dans une mise en page absolue et ajouter des coordonnées x an y? (la disposition absolue est déprimée, alternative?)

+0

Assurez-vous de définir setContentView (conteneur) de votre Activity ou quelque chose de similaire dans votre méthode onCreate. Jetez également un coup d'œil à la définition des mises en page en XML. Cela rendra vos dispositions relatives beaucoup plus faciles à traiter – CodeFusionMobile

+0

Vous n'avez pas non plus ajouté de bouton à la vue AlertButton. Il suffit de l'appeler un bouton ne fonctionne rend pas par magie, malheureusement :) – CodeFusionMobile

Répondre

2

Je pense que la manière la plus simple est de créer une vue personnalisée qui s'étend RelativeLayout. Vous pouvez ensuite ajouter 4 TextView s dans n'importe quel arrangement que vous souhaitez avec n'importe quelle personnalisation dont vous avez besoin. Pour le faire ressembler et agir comme un bouton, vous pouvez ajouter un bouton à votre mise en page avec la largeur et la hauteur définies à fill_parent. Assurez-vous que vos TextView ne sont pas focalisables et que le bouton est envoyé à l'arrière de la mise en page.

Vous pouvez également définir les propriétés de RelativeLayout dans votre vue personnalisée sur clickable = true et focusable = true. Ensuite, ajoutez un dessin en tant que fond de votre vue qui ressemble à un bouton. Utilisez un sélecteur pour gérer tous les états focalisés/pressés comme le fait un bouton réel. Vous trouverez des détails sur la façon de le faire ici: Standard Android Button with a different color

+0

i essayé Methode 1 i le premier poste édité avec de nouveaux problèmes il ne présente pas le contrôleur personnalisé thx pour l'aide à ce jour :) – Berty

+0

@Berty Vous souvenez-vous de setContentView (conteneur) dans onCreate de votre activité? – CodeFusionMobile

+0

oui je l'ai ajouté j'ai essayé aussi d'ajouter un textview avant et après le bouton personnalisé je reçois quelque chose comme ça http://i77.photobucket.com/albums/j74/bertyhell/errors/custom_button.png donc le bouton n'est pas affiché J'ai défini setContentView setContentView (R.layout.alerts); – Berty