我在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 。
创建自定义布局
此简单示例使用带有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
子类。 也可以看看
关于android - Android在MaterialDialog中对齐中心或对齐右标题和消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58457053/