【问题标题】:Android align center or align right title and message in MaterialDialogAndroid在MaterialDialog中对齐中心或右对齐标题和消息
【发布时间】:2019-10-18 19:26:08
【问题描述】:

我在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();

但它在这个版本中接缝 builder remove。我怎样才能做到这一点?

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

【问题讨论】:

  • 使用材料组件库中的MaterialAlertDialogBuilder
  • 我只需要将文本对齐到中心或右侧。因为这个库有很好的特性,如果能做到,那就太好了

标签: android kotlin dialog material-dialog


【解决方案1】:

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

自定义警报对话框

此完整示例包括将数据传回 Activity。

创建自定义布局

这个简单的例子使用了一个带有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
  • 单击对话框按钮时将任何数据发送回活动。

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

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();
    }
}

注意事项

  • 如果您发现自己在多个地方使用它,请考虑创建一个 DialogFragment 子类,如 documentation 中所述。

另见

【讨论】:

  • 我知道我可以在没有任何库的情况下在 Android 上做到这一点,但我想使用我提到的库来做到这一点(对于提到的库功能)。
  • @peyman 这是对话。这里应该有哪些功能?)您可以以相同的方式将自定义布局传递给材质对话框。
  • this。我也在MaterialDialog 中使用FilesColor 库@ 987654326@ github。 @afollestad(MaterialDialog 的创建者)基于系统语言完成布局方向(我认为这很糟糕),但我的应用程序必须根据内容显示方向(想象一个语言教程应用程序)。我没有时间创建自己的设计,暂时将清单更改为android:supportsRtl="false"tools:replace="android:supportsRtl"
  • 继续之前的评论:我想我会在我的应用程序的下一个版本中这样做:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
相关资源
最近更新 更多