2016-11-24 63 views
1

以下是我的代码,其中显示ok按钮到左侧。如何在警报对话框中将中性按钮位置设置为中心而不是左侧

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setMessage("No product found"); 
     builder.setCancelable(false); 
     builder.setNeutralButton(
       "Ok", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         ((MainActivity)getActivity()).fragment_Scan_call(); 
        } 
       }); 
// Must call show() prior to fetching text view 
     AlertDialog alert = builder.create(); 
     alert.show(); 
+1

创建custiom AlertDialog视图的空间。 – Sanoop

回答

2
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
builder.setMessage("No product found"); 
builder.setCancelable(false); 
builder.setNeutralButton(
      "Ok", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        ((MainActivity)getActivity()).fragment_Scan_call(); 
       } 
      }); 
// Must call show() prior to fetching text view 
    AlertDialog alert = builder.create(); 
    alert.show(); 

final Button neutralButton = alert.getButton(AlertDialog.BUTTON_NEUTRAL); 
LinearLayout.LayoutParams neutralButtonLL = (LinearLayout.LayoutParams) neutralButton.getLayoutParams(); 
neutralButtonLL.gravity = Gravity.CENTER; 
neutralButton.setLayoutParams(neutralButtonLL); 
+0

你试过了吗?因为我没有工作。事实上,当试图改变(用于测试)** Gravity.CENTER **到水平或垂直时,没有改变** OK按钮**位置。 –

+0

你在调用alert.show()后设置layoutParams吗? –

+0

是的,我在调用alert.show()后设置了LayoutParameters。 –

1

后许多谷歌搜索,默认AlertDialog布局的研究,我已经想通了,没有在buttonBarLayout中的按钮neutral button-ve/+ve buttons与地方“1”之间的空间布局。

所以,起初我们需要删除空间,或使它的知名度GONEinvisible会让它仍然需要一个空间,在buttonBarLayout)也是我们最好使用方法onShowListner更好,这样做是显示在对话框后:

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); 
      space.setVisibility(View.GONE); 
     } 
}); 

然后,只要你想,你可以DESGIN buttoms或者如果你想只是为了让nutral BUTTOM才可以使用this question

相关问题