대화 메시지가 정말 존재하지 않는다 : 여기
내 onBindDialogView입니까? 어쩌면 거기에 있지만 텍스트 색상으로 인해 보이지 않게 될 수도 있습니다. (또는 소프트웨어 키보드를 닫으려고 시도하십시오). "\ n"문자가있는 대화 메시지를 실험 해보고 대화 레이아웃에 영향을 주는지 확인하십시오. 그렇다면 대화 메시지가 실제로 거기에 있지만 너무 잘 위장되었음을 의미합니다.
EditTextPreference는 alert_dialog.xml의 기존 메시지를 대화 메시지로 대체하지만 불행하게도 특정 테마에서 가시성 문제를 일으킬 수있는 다른 텍스트 스타일을 사용하는 텍스트 뷰를 가져옵니다 (preference_dialog_edittext.xml). 그들의 크기조차도 다릅니다.
대체 할 원본 텍스트보기에서 텍스트 색상 및 크기를 가져 와서 새로운 텍스트보기에 적용 할 수 있지만 시각적으로 일관성이 높기 때문에 원본 텍스트보기를 유지하는 것이 좋습니다. 향후 UI 변경 사항이있는 경우 그들이 다른 재정의 추가하여 함께 좀 더 가까이하게 할 수 있습니다, 다음과 같은 우선
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);
}
당신이 대화 메시지와 글고보기 멀리 떨어져 너무 생각한다면
을 추가하십시오 :
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);
}
을하고 추가 removeAllViews를 호출 한 후 onAddEditTextToDialogView 메소드의 다음 행을 찾으십시오.
container.setPadding(container.getPaddingLeft(), 0, container.getPaddingRight(), container.getPaddingBottom());