0

Je dois créer une disposition de table qui contient seulement deux rangées et deux colonnes. Le but est de créer un jeu comme "le millionnaire" où le joueur peut choisir la bonne réponse. Donc j'utilise la table mise en page pour les quatre réponses. Les réponses sont affichées comme:comment créer une disposition de table

A,C 
    B,D 

Si je réponds A, mais la bonne réponse sont C ou D, j'ai ceci:

http://tinypic.com/view.php?pic=33w33oo&s=5

Mais si je réponds A, mais la bonne réponse est B, j'ai ceci:

http://i40.tinypic.com/5wfg55.jpg

Dans ce cas, pourquoi les deux boutons apparaissent de cette façon ???

Voici mon code xml:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res/com.example.applicazionescienza" 
    android:id="@+id/tabella" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="bottom|center" 
    android:background="@drawable/sfondo" 
    android:gravity="bottom|center" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".Gioca" > 

    <TextView 
     android:id="@+id/domanda" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="10dp" 
     android:alpha="0.8" 
     android:background="@drawable/bottonedomanda" 
     android:text="TextView" /> 

    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:layout_marginBottom="10dp" 
     android:gravity="bottom" 
     android:shrinkColumns="*" 
     android:stretchColumns="*" > 

     <TableRow 
      android:id="@+id/tableRow4" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginBottom="8dp" > 

      <Button 
       android:id="@+id/buttonA" 
       android:layout_height="match_parent" 
       android:layout_marginRight="5dp" 
       android:layout_weight="1" 
       android:alpha="0.6" 
       android:background="@drawable/bottonerisposta" 
       android:gravity="center" 
       android:maxWidth="64dp" 
       android:minWidth="64dip" 
       android:textSize="11sp" 
       android:width="0px" /> 

      <Button 
       android:id="@+id/buttonC" 
       android:layout_height="match_parent" 
       android:layout_marginLeft="5dp" 
       android:layout_weight="1" 
       android:alpha="0.6" 
       android:background="@drawable/bottonerisposta" 
       android:gravity="center" 
       android:maxWidth="64dp" 
       android:textSize="11sp" 
       android:width="0px" /> 
     </TableRow> 

     <TableRow 
      android:id="@+id/tableRow3" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 

      <Button 
       android:id="@+id/buttonB" 
       android:layout_height="match_parent" 
       android:layout_marginRight="5dp" 
       android:layout_weight="1" 
       android:alpha="0.6" 
       android:background="@drawable/bottonerisposta" 
       android:gravity="center" 
       android:maxWidth="64dp" 
       android:minWidth="64dip" 
       android:textSize="11sp" 
       android:width="0px" /> 

      <Button 
       android:id="@+id/buttonD" 
       android:layout_height="match_parent" 
       android:layout_marginLeft="5dp" 
       android:layout_weight="1" 
       android:alpha="0.6" 
       android:background="@drawable/bottonerisposta" 
       android:gravity="center" 
       android:maxWidth="64dp" 
       android:textSize="11sp" 
       android:width="0px" /> 
     </TableRow> 
    </TableLayout> 

    <TextView 
     android:id="@+id/punteggio" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/bottonedomanda" /> 

</TableLayout> 

Ceci est mon code dans l'activité que lorsque le bouton A est cliqué créer une nouvelle AlertDialog. Ce cose est seulement la méthode quand on clique sur le bouton A.

if(v.getId()==R.id.buttonA){ 
      a.setBackgroundResource(R.drawable.bottonerispostaselezionato); 
      b.setBackgroundResource(R.drawable.bottonedomanda); 
      c.setBackgroundResource(R.drawable.bottonedomanda); 
      d.setBackgroundResource(R.drawable.bottonedomanda); 
      try { 
       Thread.sleep(500); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      AlertDialog.Builder builder = new AlertDialog.Builder(
        context); 
      builder.setTitle("Conferma"); 
      builder.setMessage("Vuoi confermare la risposta A?"); 
      builder.setCancelable(false); 

      builder.setNegativeButton("Annulla", 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 
          a.setBackgroundResource(R.drawable.bottonedomanda); 
          b.setBackgroundResource(R.drawable.bottonedomanda); 
          c.setBackgroundResource(R.drawable.bottonedomanda); 
          d.setBackgroundResource(R.drawable.bottonedomanda); 
         } 
        }); 
      builder.setPositiveButton("Prosegui", 
        new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog, 
           int which) { 

          Integer rispostaEsatta = arrayRisposte 
            .get(indiceCorrente); 
          if (rispostaEsatta == 0) {//if the correct answer is button A 

           score = score + domandaGiusta; 
           tv.setText("RISPOSTA CORRETTA PUNTEGGIO: "+score); 
           a.setBackgroundResource(R.drawable.bottonerispostacorretto);// set background green 
           Log.i("Risposta esatta complimenti", 
             "sdfd");  

          } else { 
           a.setBackgroundResource(R.drawable.botteerrato);// set background red 
           score = score - domandaSbagliata; 
           tv.setText("RISPOSTA ERRATA PUNTEGGIO: "+score);    
           switch (rispostaEsatta) {// if button A is wrong I know who is the correct button...button A=0,B=1,C=2,D=3; 
           case 1:// button B correct but user click on button A 
            a.setBackgroundResource(R.drawable.botteerrato); 

            b.setBackgroundResource(R.drawable.bottonerispostacorretto); 
//         c.setBackgroundResource(R.drawable.bottonedomanda); 
//         d.setBackgroundResource(R.drawable.bottonedomanda); 
            Log.i("lunghezza altezza", String.valueOf(a.getWidth())+" "+String.valueOf(a.getHeight())); 
            Log.i("lunghezza altezza", String.valueOf(b.getWidth())+" "+String.valueOf(b.getHeight())); 
            Log.i("lunghezza altezza", String.valueOf(c.getWidth())+" "+String.valueOf(c.getHeight())); 
            Log.i("lunghezza altezza", String.valueOf(d.getWidth())+" "+String.valueOf(d.getHeight())); 
            break; 
           case 2://Button C correct but user click button A 
            c.setBackgroundResource(R.drawable.bottonerispostacorretto); 
            b.setBackgroundResource(R.drawable.bottonedomanda); 
            d.setBackgroundResource(R.drawable.bottonedomanda); 
            break; 
           case 3:// button D correct but user click button A 
            d.setBackgroundResource(R.drawable.bottonerispostacorretto);         
            c.setBackgroundResource(R.drawable.bottonedomanda); 
            b.setBackgroundResource(R.drawable.bottonedomanda); 
            break; 
           } 

          } 
          try { 
           Thread.sleep(1000); 
          } catch (InterruptedException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 
          Thread t=new Thread(){ 
           public void run(){ 
            runOnUiThread(new Runnable(){ 
             public void run(){ 
            try { 
             Thread.sleep(2000); 
            } catch (InterruptedException e) { 
             // TODO Auto-generated catch block 
             e.printStackTrace(); 
            } 
            if(numeroDomande<2){ 
             numeroDomande++; 
             arrayDomande.remove(indiceCorrente); 
             arrayRisposte.remove(indiceCorrente); 
             immaggini.remove(indiceCorrente); 

             scegliDomanda(); 


            } else { 
             int v=i+1; 
             Intent i = new Intent(context, 
               Livello.class); 
             i.putExtra("livello", v); 
             i.putExtra("punteggio",score); 
             startActivity(i); 

            } 

             } 
            }); 
           } 
          }; 
          t.start(); 

         } 
      }); 

      builder.create().show(); 

      Log.i("Lo score è ", String.valueOf(score)); 




     } 

Aidez-moi s'il vous plaît!

Répondre

0

Ok, vous avez quelques erreurs sur les paramètres des propriétés de mise en page. Plus spécifiquement sur les propriétés de largeur. Ce code devrait résoudre votre problème. Pour comprendre exactement pourquoi cela fonctionne, jetez un oeil sur Table Layout Andoird Documentation:

Les enfants d'un TableLayout ne peut pas spécifier l'attribut layout_width. La largeur est toujours MATCH_PARENT. Cependant, l'attribut layout_height peut être défini par un enfant; La valeur par défaut est WRAP_CONTENT. Si l'enfant est un TableRow, la hauteur est toujours WRAP_CONTENT.

En outre, vous mettez des valeurs différentes pour la largeur maximale et la largeur minimale de vos boutons.

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/tabella" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      tools:context=".Gioca" > 

<TextView 
     android:id="@+id/domanda" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="10dp" 
     android:alpha="0.8" 
     android:text="TextView" /> 

<TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:layout_marginBottom="10dp" 
     android:gravity="bottom" 
     android:shrinkColumns="*" 
     android:stretchColumns="*" > 

    <TableRow 
      android:id="@+id/tableRow4" 
      android:layout_marginBottom="8dp" > 

     <Button 
       android:id="@+id/buttonA" 
       android:layout_height="match_parent" 
       android:layout_marginRight="5dp" 
       android:alpha="0.6" 
       android:gravity="center" 
       android:textSize="11sp"/> 

     <Button 
       android:id="@+id/buttonC" 
       android:layout_height="match_parent" 
       android:layout_marginLeft="5dp" 
       android:alpha="0.6" 
       android:gravity="center"/> 
    </TableRow> 

    <TableRow 
      android:id="@+id/tableRow3" 
      android:layout_height="match_parent" > 

     <Button 
       android:id="@+id/buttonB" 
       android:layout_height="match_parent" 
       android:layout_marginRight="5dp" 
       android:alpha="0.6" 
       android:gravity="center" 
       android:textSize="11sp" 
       /> 

     <Button 
       android:id="@+id/buttonD" 
       android:layout_height="match_parent" 
       android:layout_marginLeft="5dp" 
       android:alpha="0.6" 
       android:gravity="center" 
       android:textSize="11sp" 
       /> 
    </TableRow> 
</TableLayout> 

<TextView 
     android:id="@+id/punteggio" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
    /> 

</LinearLayout> 
+0

Je copie votre code dans Eclipse, mais il est la même chose avec le même problème .... – francedema

+0

Avez-vous couru ce code sur l'appareil Android? Je viens de créer un projet Android avec cette mise en page et cela fonctionne. Peut-être, ce problème peut se produire en raison de votre façon de manipuler les boutons pour définir comme faux ou correct. Comment tu fais ça? –

+0

Je modifie le bouton d'arrière-plan en fonction de la réponse correcte.Si le bouton actuel est une mauvaise réponse le bouton d'arrière-plan est rouge, si le bouton actuel est une réponse correcte, le bouton d'arrière-plan est vert. J'ai mis votre code xml mais si je sélectionne le bouton A mais la bonne réponse est le bouton B j'ai le même problème ... J'ai modifié mon code dans le post! – francedema

Questions connexes