2016-11-27 57 views
3

如何将AlertDialog中的项目与由dialog.setItems()创建的中心对齐?Android AlertDialog设置对齐中心的项目

例如,这将创建与默认左对齐数次选项对话框:

AlertDialog.Builder timeOutDialog = new AlertDialog.Builder(getActivity()); 
timeOutDialog.setTitle("Set Timer"); 
final String[] types = {"5 min", "15 min", "30 min", "1 hour", "3 hours", "6 hours", "12 hours", "24 hours"}; 

timeOutDialog.setItems(types, new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
     switch(which){ 
      case 0: // 5m 
       timerLength = 0; 
       break; 

      case 1: // 15m 
       timerLength = 1; 
       break; 

      // ... 
     } 
     timeOutButton.setText(types[which]); 
    } 

}); 

AlertDialog dialog = timeOutDialog.show(); 

我知道有ID的设置对齐的标题和消息。是否有标识和消息(例如android.R.id.message)允许设置对齐ID?

我搜索了答案,许多人说这样做的唯一方法是膨胀对话框或创建一个自定义对话框xml与自定义中心微调。那些是我唯一的选择吗?

回答

1

感谢大家的关心,

我已经找到了解决方案,通过使用一种叫做material-dialogs

有了它库我能够使标题居中,以及微调。以我的经验来说,使用香草android集中弹出微调框是非常耗时的。

@OnClick(R.id.list) 
    public void showList() { 
     new MaterialDialog.Builder(this) 
       .title(R.string.socialNetworks) 
       .items(R.array.socialNetworks) 
       .itemsCallback(new MaterialDialog.ListCallback() { 
        @Override 
        public void onSelection(MaterialDialog dialog, View view, int which, CharSequence text) { 
         showToast(which + ": " + text); 
        } 
       }).itemsGravity(GravityEnum.CENTER) 
       .titleGravity(GravityEnum.CENTER) 
       .show(); 
    } 
+0

感谢您指出这个好的图书馆。 –