android - Android在MaterialDialog中对齐中心或对齐右标题和消息

标签 android kotlin dialog material-dialog

我在this地址中使用MaterialDialog版本3.1.1

我想在对话框中右对齐或居中对齐标题和消息,但是找不到在文档中执行此操作的方法。

我检查此页面https://github.com/afollestad/material-dialogs/issues/434,有人使用MaterialDialog.Builder像这样的代码:

new MaterialDialog.Builder(MainActivity.this)
                    .titleGravity(GravityEnum.END)
                    .contentGravity(GravityEnum.END)
                    .title("چقدر عجله داری بابا!")
                    .content("این ویژگی در نسخه‌ی بعدی فعال خواهد شد! برو بعدن بیا!")
                    .positiveText("باشه. :(")
                    .negativeText("چه بهد")
                    .typeface("iran_sans_bold","iran_sans")
                    .callback(new MaterialDialog.ButtonCallback() {
                        @Override
                        public void onPositive(MaterialDialog dialog) {
                            Log.wtf("+","shod");
                        }

                        @Override
                        public void onNegative(MaterialDialog dialog) {
                            Log.wtf("-","shod");
                        }
                    })
                    .show();

但它接缝了 build 者在这个版本中删除。我怎样才能做到这一点?

更新1:
MaterialDialog 支持更改基于android系统语言的layoutDirection,但是我有不同的情况,我想更改基于内容的layoutDirection

最佳答案

您不能使用默认对话框来做到这一点。但是显然,您可以在对话框上以自己的布局开始。

自定义AlertDialog

这个完整的示例包括将数据传递回 Activity 。

enter image description here

创建自定义布局

此简单示例使用带有EditText的布局,但是您可以使用任何喜欢的布局替换它。

custom_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:paddingLeft="20dp"
              android:paddingRight="20dp"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

在代码中使用对话框

关键部分是
  • 使用setView将自定义布局分配给AlertDialog.Builder
  • 单击对话框按钮后,
  • 会将所有数据发送回 Activity 。

  • 这是上图所示示例项目的完整代码:

    MainActivity.java
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void showAlertDialogButtonClicked(View view) {
    
            // create an alert builder
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("Name");
    
            // set the custom layout
            final View customLayout = getLayoutInflater().inflate(R.layout.custom_layout, null);
            builder.setView(customLayout);
    
            // add a button
            builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // send data from the AlertDialog to the Activity
                    EditText editText = customLayout.findViewById(R.id.editText);
                    sendDialogDataToActivity(editText.getText().toString());
                }
            });
    
            // create and show the alert dialog
            AlertDialog dialog = builder.create();
            dialog.show();
        }
    
        // do something with the data coming from the AlertDialog
        private void sendDialogDataToActivity(String data) {
            Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
        }
    }
    

    笔记
  • 如果您发现自己在多个地方都使用过此功能,请考虑按照documentation中的说明制作DialogFragment子类。

  • 也可以看看
  • Android Alert Dialog with one, two, and three buttons
  • How can I display a list view in an Android Alert Dialog?
  • 关于android - Android在MaterialDialog中对齐中心或对齐右标题和消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457053/

    相关文章:

    android - 无法添加窗口错误

    android - 用 Guava 编译谷歌云服务客户端库

    如果没有先前的互联网连接,则无法验证 Android 自签名证书

    android - 联系人列表检索结果

    android - dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper 无法转换为 android.app.Activity

    Android Notification - 弹出对话框

    java - 从对话框到 Activity 的按钮位置

    android - 是否有内置 API 用于处理 Android 中的缩放功能

    rest - 如何将多个 HTTP Verb 映射到 HTTP4K 中的同一路径

    kotlin - LocalDateTime 扩展功能和智能转换