不做概念性介绍 只写例子和遇到的问题
例子1
解决的问题是
1 MaterialDialog设置自定义布局的时候 设置title和按钮时没有效果的,因为自定义布局覆盖了MaterialDialog 的布局,所以只能自己在自定义布局中将 title 和 两个按钮 画出来 然后设置值和事件监听
2 editText在dialog中无法输入的问题
MaterialDialog dialog = new MaterialAlertDialog(this);
//设置自定义布局
dialog.setContentView(R.layout.view_group_chat_details_group_name_dialog);
View customView = dialog.getCustomView();
//我在自定义布局中放了个editText
MinMaxEditText editText = customView.findViewById(R.id.group_name_change_et);
DinTextView saveButton = customView.findViewById(R.id.group_name_save);
saveButton.setOnClickListener(v -> {
model.handleGroupNameChange(editText.getText());
dialog.dismiss();
});
DinTextView cancelButton = customView.findViewById(R.id.group_name_cancel);
cancelButton.setOnClickListener(v -> dialog.dismiss());
//设置dialog 显示的时候 调起键盘 miss的时候 隐藏键盘
dialog.setOnShowListener(dialogInterface -> KeypadUtils.showSoftKeyboard(editText));
dialog.setOnCancelListener(dialogInterface -> KeypadUtils.hideSoftKeyboard(editText));
// 这句代码解决了 editText 在dialog中的时候 无法输入的问题
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
dialog.show();
布局如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.grindrapp.android.view.DinTextView
android:id="@+id/group_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="@color/grindr_pure_black"
android:text="@string/chat_group_details_group_name"
android:textStyle="bold"
android:layout_alignParentTop="true"
android:layout_marginTop="25dp"
android:layout_marginLeft="27dp"
android:layout_alignParentLeft="true"/>
<com.grindrapp.android.view.MinMaxEditText
android:id="@+id/group_name_change_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_below="@id/group_name"
android:layout_alignLeft="@+id/group_name"
android:layout_marginRight="29dp"
app:charLimit="30"
app:minMaxEditTextColor="@color/grindr_grey_5"/>
<com.grindrapp.android.view.DinTextView
android:id="@+id/group_name_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/grindr_grey_3"
android:textSize="16sp"
android:text="@string/cancel"
android:layout_alignBottom="@+id/group_name_save"
android:layout_toLeftOf="@+id/group_name_save"
android:layout_marginRight="28dp"/>
<com.grindrapp.android.view.DinTextView
android:id="@+id/group_name_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="@color/grindr_goldenrod"
android:text="@string/ok"
android:layout_marginTop="33dp"
android:layout_marginBottom="29dp"
android:layout_marginRight="29dp"
android:layout_below="@+id/group_name_change_et"
android:layout_alignParentRight="true"/>
</RelativeLayout>