2012-11-30 10 views
15

Jestem nowy z Androidem.Android AlertDialog Przenieś PositiveButton w prawo i NegativeButton po lewej

Obecnie chcę wyświetlić pole AlertDialog za pomocą przycisków "OK" & "Anuluj".

Domyślnie jest PositiveButton: Lewo, NegativeButton: Prawo

Czy możesz dać mi znać, jak mogę przenieść PositiveButton po prawej stronie & NegativeButton po lewej stronie?

Czy jest jakaś szansa/problem, jeśli przycisk Negative powoduje zły dźwięk po naciśnięciu OK, jeśli zmienimy tekst "OK" na NegativeButton & "Anuluj" na PositiveButton.

mój kod:

AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext()); 
        builder.setMessage("Confirmation?") 
        .setCancelable(false) 
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          //Todo 
          dialog.cancel(); 
         } 
        }) 
        .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          //TOdo 
         } 
        }) 

dialog = builder.create(); 

Dzięki Anioł

Odpowiedz

3
AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext()); 
       builder.setMessage("Confirmation?") 
        .setCancelable(false) 
        .setNegativeButton("OK", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          //TOdo 
         } 
        }) 
        .setPositiveButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          //TOdo 
          dialog.cancel(); 
         } 
        }) 


       diaglog = builder.create(); 

Ale polecam, aby przejść wraz z konwencji, chyba że masz dobry powód, aby zmienić kolejność. Ułatwi to użytkownikom korzystanie z aplikacji.

+0

Czy jest jakaś szansa/kłopot jeśli Negativebutton spowodować zły dźwięk po naciśnięciu przycisku OK, jeśli zmienimy tekst „OK”, aby NegativeButton i „Anuluj”, aby PositiveButton. – user1866128

+0

Jest to możliwe, ale nigdy nie widziałem czegoś takiego. – Caner

-1

To nie jest najbardziej elegancki sposobów, ale będzie to robić co chcesz

AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext()); 
      builder.setMessage("Confirmation?") 
       .setCancelable(false) 
       .setNegativeButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         //TOdo 
         dialog.cancel(); 
        } 
       }) 
       .setPositiveButton("Cancel", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         //TOdo 
        } 
       }) 


      diaglog = builder.create(); 

Tylko przycisk Cancel jako pozytywne i przycisk Ok jako negatywne.

+0

Czy są jakieś problemy/problemy, jeśli przycisk Negative powoduje zły dźwięk po naciśnięciu OK, jeśli zmienimy tekst "OK" na NegativeButton i "Cancel" na PositiveButton. – user1866128

0

Nie ma sposobu, aby zmienić ustawienie diffault w android Ale można zmienić tekst do ok cancle ustawić funkcjonalnie accroding tym

AlertDialog.Builder builder = new AlertDialog.Builder(SUtils.getContext()); 
    builder.setMessage("Confirmation?") 
      .setCancelable(false) 
      .setNegativeButton("OK", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
          //TOdo 
         } 
        }) 
      .setPositiveButton("CANCEL", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
          //TOdo 
          dialog.cancel(); 
         } 
        }); 


dialog = builder.create(); 
+0

Czy jest jakaś szansa/problem, jeśli Negativebutton powoduje zły dźwięk po naciśnięciu OK, jeśli zmieniam tak – user1866128

+0

nie ma problemu z kłopotami. Używam tego typu w mojej aplikacji Android –

33

to może nie być bezpośrednią odpowiedzią. Ale tylko niektóre informacje na podobny temat. Od this wątku na własnym forum Google, Romain facet powiedział ..

Idąc dalej kolejność pozytywnych/negatywnych przyciski będą jednym stosowane w ICS.

i konwencja za wersją OS jest

  • W urządzeniach przed Honeycomb, kolejność przycisków (od lewej do prawej) był POSITIVE - NEUTRAL - ujemny.
  • Na nowszych urządzeniach korzystających z motywu Holo, kolejność przycisków (od lewej do z prawej) jest teraz NEGATYWNA - NEUTRALNA - POZYTYWNA.

Jeśli jest to konwencja, którą Android/Google chce przestrzegać, czy nie lepiej postępować tak samo, ponieważ użytkownicy nie będą używać samej aplikacji. Mimo wszystko przyjazność dla użytkownika jest pierwszą rzeczą, której szuka programista.

+3

Jest to jedyna poprawna i pomocna odpowiedź, ponieważ te obejścia zamieszczone powyżej nie naprawiaj problemu dla użytkowników w wersji 11 i nowszych, to tylko powoduje zamieszanie;] ... – reVerse

0

check to https://github.com/hslls/order-alert-buttons

dependencies { 
    compile 'com.github.hslls:order-alert-buttons:1.0.0' 
} 


AlertDialogParams params = new AlertDialogParams(); 
params.mTitle = "title"; 
params.mMessage = "message"; 
params.mPositiveText = "Ok"; 
params.mNegativeText = "Cancel"; 
params.mCancelable = true; 
params.mAlign = BUTTON_ALIGN.POSITIVE_BUTTON_LEFT; // fix button position 
params.mClickListener = new AlertDialogClickListener() { 
    @Override 
    public void onPositiveClicked() { 

    } 

    @Override 
    public void onNegativeClicked() { 

    } 
}; 

AlertDialog dialog = AlertDialogBuilder.createAlertDialog(this, params); 
0

bardzo prosty sposób przenieść przyciski na AlertDialog do prawej strony jest ukryć leftSpacer, A LinearLayout w XML Core który obsługuje układ domyślny.

// Fetch the PositiveButton 
final Button  lPositiveButton = lDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
// Fetch the LinearLayout. 
final LinearLayout lParent   = (LinearLayout) lPositiveButton.getParent(); 
// Ensure the Parent of the Buttons aligns it's contents to the right. 
lParent.setGravity(Gravity.RIGHT); 
// Hide the LeftSpacer. (Strict dependence on the order of the layout!) 
lParent.getChildAt(1).setVisibility(View.GONE); 
0

I zorientowali się, że istnieje układ przestrzeń pomiędzy neutral button i -ve/+ve buttons z miejsca „1” w buttonBarLayout w którym przyciski.

Więc najpierw musimy usunąć tę przestrzeń i albo zrobić to widoczność GONE (invisible pozwoli nadal zajmuje miejsce w buttonBarLayout) również lepiej użyć metody onShowListner lepiej, że robi to po pokazywania okna przez:

alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
     @Override 
     public void onShow(DialogInterface dialog) { 
      Button neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL); 
      LinearLayout view = (LinearLayout) neutralButtonOrAnyOtherBtnFromThe3Btns.getParent(); 
      Space space= (Space) view.getChildAt(1); 
     } 
}); 

następnie reszta jest Twój projekt, życzenie, które pomaga

Powiązane problemy