2012-03-28 16 views
0

Ich weiß, dass ich das mit einem Header lösen könnte, aber ich würde lieber keinen haben. Gibt es trotzdem Zugriff auf die Eigenschaften des Abbrechen-Buttons?Wie kann ich die Schaltflächen in meinem alertDialog entfernen?

Mein Code und ein Bild der AlertView ist unten.

enter image description here

for(int i = 0; i < 10; i++) 
      { 
       AlertDialog.Builder alert = new AlertDialog.Builder(this); 
       if(view.getId() == (getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud"))) 
       { 


        //alert.setTitle("Notes"); 

        // Sets an EditText view to get user input 
        final EditText input = new EditText(this); 
        input.setText(table.seats[i].getPlayer().getNotes()); 
        alert.setView(input); 

        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) 
        { 
         for(int i = 0; i < 10; i++) 
         { 
          if(view.getId() == (getResources().getIdentifier("imageButton" + (i+1), "id", "en.deco.android.livehud"))) 
          { 
           table.seats[i].getPlayer().setNotes(input.getText().toString()); 
          } 
         } 

        } 
        }); 

        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
         // Canceled. 
         } 
        }); 
        alert.show(); 
        return true; 
       } 
      } 

Antwort

0

setMinimumWidth() erledigt den Job. Der Code darüber ist einfach Pixel statt Pixel zu generieren.

DisplayMetrics metrics = getResources().getDisplayMetrics(); 
         float dp = 250f; 
         int pixels = (int) (metrics.density * dp + 0.5f); 
         input.setMinimumWidth(pixels); 
1

Ich würde rechnen Sie Ihre EditText auf eine definierte Breite einstellen müssen, oder fill_parent/match_parent.

+0

Wie? Ich kann nichts in der EditText-Dokumentation sehen, die dies erlaubt. – Deco

+1

Weisen Sie dem Bearbeitungstext ein neues LayoutParams-Objekt zu. Es könnte einfacher sein, ein überhöhtes XML-Layout anstelle einer Ansicht zu verwenden. – Phix

+0

Ich habe es versucht, Fill Parent und Wrap_Content hatte keine Wirkung (Inhalte werden bereits standardmäßig umgebrochen?). Die Einstellung auf eine feste Größe funktionierte, aber ich wollte, dass die Breite erweiterbar war, sodass meine mögliche Lösung für mich besser war. Danke trotzdem. – Deco

0

Sie eine Ansicht für Ihre negative Taste einfach einstellen kann, wie folgt aus:

alert.setNegativeButton(R.id.cancelButton, new OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // Some action to be done when clicked.. 

      } 
     }); 

und du so ein Layout mit einem Knopf als root erstellen:

<?xml version="1.0" encoding="utf-8"?> 
<Button xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/cancelButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Cancel"> 
</Button> 

wo Sie stellen Sie die Breite der Schaltfläche normalerweise wrap_content

bearbeiten: es gibt auch eine AlertDialog.Builder setNegativeButton (int textId, DialogInterface.OnClickListener listener)

+0

Ich glaube nicht, dass das funktioniert. setNegativeButton scheint unsere customView nicht als negativeButton festzulegen. Das erste Argument besteht lediglich darin, dass der Text auf der Schaltfläche angezeigt wird. [link] http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setNegativeButton (java.lang.CharSequence, android.content.DialogInterface.OnClickListener) Wenn versucht wird, wird Abbrechen ersetzt bei false und der Button hat noch zwei Zeilen. Gibt es eine andere Möglichkeit, unsere eigene Ansicht als negative Schaltfläche festzulegen? – Deco

Verwandte Themen