Android AlertDialog设置项目以对齐中心

时间:2016-11-27 20:01:44

标签: java android android-layout android-studio alertdialog

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

例如,这会使用默认左对齐创建一个包含多个选项的对话框:

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可以为标题和消息设置对齐方式。是否有ID允许设置对齐与标题和消息(例如android.R.id.message)?

我搜索了答案,很多人说这样做的唯一方法是给对话框充气或者用自定义居中的微调器创建一个自定义对话框xml。这些是我唯一的选择吗?

1 个答案:

答案 0 :(得分:2)

感谢大家的兴趣,

我通过使用名为material-dialogs

的库找到了解决方案

有了它,我能够将标题和旋转器都集中在一起。根据我的经验,使用vanilla 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();
    }