2015-06-09 11 views
16

केंद्र के लिए मैं एंड्रॉयड (जावा) प्रोग्रामिंग के लिए इस कोड का उपयोग बटन? जैसा कि आप देखते हैं मैं Gravity.CENTER_HORIZONTAL (.CENTER) का उपयोग करके बटन को सेंसर करने के लिए संरेखित करने का प्रयास करता हूं लेकिन कुछ भी नहीं बदलता है। बटन लगभग सही स्थिति में है।संरेखित AlertDialog

उत्तर

9

यह मेरे लिए काम किया:

final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.AppCompatAlertDialogStyle); 
    builder.setCancelable(true); 
    builder.setTitle(title); 
    builder.setMessage(message); 

    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

     } 
    }); 


    final AlertDialog dialog = builder.create(); 
    dialog.show(); //show() should be called before dialog.getButton(). 


    final Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE); 
    LinearLayout.LayoutParams positiveButtonLL = (LinearLayout.LayoutParams) positiveButton.getLayoutParams(); 
    positiveButtonLL.gravity = Gravity.CENTER; 
    positiveButton.setLayoutParams(positiveButtonLL); 
+0

संदर्भ 'positiveBtn' क्या है? – t0m

+0

क्या यह वास्तव में काम करता है? – zygimantus

+0

एंड्रॉइड 7.1.1 पर काम नहीं करता है लेकिन नीचे @ स्कोट ब्राउन का समाधान ठीक काम करता है। – mtronics

1

मुझे लगता है कि आप समर्थन लाइब्रेरी से AlertDialog का उपयोग कर रहे हैं।

यदि ऐसा है तो अपने आयात को android.app.AlertDialog पर बदलने का प्रयास करें।

22

उपयोग crtn की विधि, लेकिन इसके बजाय LayoutParam के गुरुत्वाकर्षण बदलने की, ViewGroup.LayoutParams.MATCH_PARENT को इसकी चौड़ाई बदलने;

+2

यह काम कर रहा है, धन्यवाद –

+0

ठीक काम करता है। मेरे जैसे आलसी लोगों के लिए superclear होने के लिए: <सकारात्मकButtonLL.gravity = Gravity.CENTER;><सकारात्मकButtonLL.width = ViewGroup.LayoutParams.MATCH_PARENT;> के साथ लाइन को बदलें। –

0

android.support.v7.app.AlertDialog का उपयोग करें जो आपके सकारात्मक और नकारात्मक बटन को केंद्र में संरेखित करेगा।

android.app.AlertDialog नीचे दिए गए बटन को नीचे 16 डीपी स्पेस छोड़कर शीर्ष पर रखा जाएगा।

2

क्रेटन की विधि और स्कॉट ब्राउन के संशोधन की कोशिश की, दोनों ने मुझे यह पसंद नहीं किया कि मुझे कैसा लगा।

crtn के समाधान बिल्कुल मेरे लिए बटन की उपस्थिति परिवर्तन नहीं किया (मैं android.R.style.Theme_Material_Light_Dialog उपयोग कर रहा हूँ) और स्कॉट ब्राउन के समाधान मेरी सकारात्मक बटन संवाद माता पिता के किनारे अतीत का विस्तार कर दिया।

Theme_Material_Light_Dialog के लिए बटन LinearLayout उपclass के भीतर निहित हैं जो बटन को दाएं करने के लिए अपने दूसरे (अनुक्रमणिका 1) तत्व के रूप में रिक्त दृश्य का उपयोग करता है।

मैं Button रेफरी हड़पने crtn की तरह कार्य करता है:

AlertDialog dialog = bld.create(); 
dialog.show(); //show() MUST be called before dialog.getButton 
Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE); 

लेकिन तब मैं CENTER_HORIZONTAL

को View.GONE को leftSpacer और माता पिता के गुरुत्वाकर्षण सेट
LinearLayout parent = (LinearLayout) positiveButton.getParent(); 
parent.setGravity(Gravity.CENTER_HORIZONTAL); 
View leftSpacer = parent.getChildAt(1); 
leftSpacer.setVisibility(View.GONE); 

यह लाभ ऐसा नहीं है कि है संवाद के बटन स्टैकिंग व्यवहार को तोड़ना नहीं है। नुकसान यह है कि यदि आंतरिक लेआउट बदलता है, तो यह टूट जाएगा, इसलिए वाईएमएमवी।

1

आप एक ही समय (बड़े & सेंटर) में सकारात्मक और नकारात्मक बटन करना चाहते हैं, तो आप कुछ इस तरह का उपयोग कर सकते हैं:

Dialog Positive & Negative Buttons

AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 
alertDialog.setTitle("Title"); 
alertDialog.setMessage("Message"); 

alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Yes", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }); 

alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "No", 
     new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }); 
alertDialog.show(); 

Button btnPositive = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
Button btnNegative = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE); 

LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) btnPositive.getLayoutParams(); 
layoutParams.weight = 10; 
btnPositive.setLayoutParams(layoutParams); 
btnNegative.setLayoutParams(layoutParams); 
संबंधित मुद्दे