ли диалоговое сообщение действительно отсутствует? Вероятно, там, но его цвет текста может сделать его меньше (или нет) видимым. (Или попробуйте отменить клавиатуру программного обеспечения). Попробуйте поэкспериментировать с диалоговыми сообщениями с количеством символов «\ n» и посмотреть, влияет ли это на макет диалогового окна. Если это так, значит, диалоговое сообщение на самом деле там, но слишком хорошо замаскировано.
EditTextPreference предоставляет текстовое представление (в файле preference_dialog_edittext.xml), которое заменяет существующий (в alert_dialog.xml) для диалогового сообщения, но, к сожалению, с другим текстовым стилем, что может вызвать проблему видимости в определенных темах. Даже их размеры различны.
Одним из решений может быть получение цвета и размера текста из исходного текстового вида для замены и применения их к новому, но я бы предложил сохранить исходное текстовое представление вместо этого, поскольку он скорее будет визуально согласованным если есть какие-либо будущие изменения пользовательского интерфейса. Попробуйте добавить следующее переопределение
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder);
builder.setMessage(getDialogMessage()); // bring back the original text view
}
protected void onAddEditTextToDialogView(View dialogView, EditText editText) {
int id = getContext().getResources().getIdentifier("edittext_container", "id", "android");
ViewGroup container = (ViewGroup) dialogView.findViewById(id);
container.removeAllViews(); // remove the new text view
super.onAddEditTextToDialogView(dialogView, editText);
}
Если вы считаете, что сообщение диалога и вид EditText слишком далеко друг от друга, они могут быть сведены вместе чуть ближе, добавив еще переопределение:
protected void showDialog(Bundle state) {
super.showDialog(state);
int id = getContext().getResources().getIdentifier("message", "id", "android");
TextView message = (TextView) getDialog().findViewById(id);
message.setPadding(message.getPaddingLeft(), message.getPaddingTop(), message.getPaddingRight(), 0);
}
и добавить следующая строка в методе onAddEditTextToDialogView после вызова removeAllViews:
container.setPadding(container.getPaddingLeft(), 0, container.getPaddingRight(), container.getPaddingBottom());