Android выровняйте центр или правый заголовок и сообщение в MaterialDialog
Я использую 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();
но в этой версии конструктор швов убрал. Как я могу это сделать?
Обновление 1:MaterialDialog
Поддержка изменения layoutDirection базы на системном языке Android, но у меня другая ситуация, и я хочу изменить layoutDirection на основе содержимого
1 ответ
Вы не можете сделать это с помощью диалога по умолчанию. Но очевидно, что вы можете начать с вашего собственного макета в диалоговом окне.
Пользовательский 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
подкласс, как описано в документации.