2012-02-02 33 views
7

Có thể có tiêu đề nhiều dòng trong hộp thoại cảnh báo Android không? Tôi đã thử một vài giải pháp được đăng ở đây nhưng không có giải pháp nào cho tôi. Tôi luôn luôn kết thúc với tiêu đề hiển thị 3 dấu chấm (...) chuỗi cho tiêu đề. Bất kỳ mã mẫu hoặc ví dụ làm việc nào liên quan đến cùng một mẫu sẽ được đánh giá cao.Làm thế nào để xây dựng hộp thoại cảnh báo với tiêu đề nhiều dòng?

+0

Hãy xem câu trả lời của tôi và xem xét đánh dấu nó là chính xác. – Radu

+0

xin vui lòng xem xét câu trả lời của tôi, nó gây phiền nhiễu để có sai lầm "chính xác" câu trả lời trên SO. – Radu

Trả lời

1

Nếu bạn đang sử dụng hộp thoại cảnh báo sau đó tiêu đề có thể chứa tối đa 2 dòng, nếu không bạn phải đi với tùy chỉnh Dialog.

+0

Tôi đã thử với chuỗi tiêu đề 3 dòng có thể hiển thị chỉ 2 và chuỗi thứ ba không được hiển thị. – Manju

+0

Câu trả lời này không chính xác và không nên là câu trả lời được chấp nhận. –

2

Đây là cách để thiết lập tiêu đề

AlertDialog.Builder builder = new AlertDialog.Builder(Class name.this); 
    builder.setTitle("Welcome to App,\n There are no App.\n Add a new data."); 
+4

Tôi nghĩ bạn không thể có nhiều hơn 2 dòng trong thanh tiêu đề, tôi đã thử mẫu của bạn và có thể lấy tiêu đề cho 2 dòng và dòng thứ ba bị thiếu. Nếu chuỗi đầu tiên có hơn 30 ký tự thì sao? – Manju

20

Bạn cần phải sử dụng builder.setCustomTitle():

AlertDialog.Builder builder = new AlertDialog.Builder(context); 
TextView textView = new TextView(context); 
textView.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur " + 
       "tincidunt condimentum tristique. Vestibulum ante ante, pretium porttitor " + 
       "iaculis vitae, congue ut sem. Curabitur ac feugiat ligula. Nulla " + 
       "tincidunt est eu sapien iaculis rhoncus. Mauris eu risus sed justo " + 
       "pharetra semper faucibus vel velit."); 
builder.setCustomTitle(textView); 

Tài liệu là ở đây: AlertDialog.builder

enter image description here

+0

'setCustomTitle()' không phải là phương thức 'AlertDialog.Builder'. –

+0

Xin lỗi, xin lỗi, bạn nói đúng. 'setCustomTitle (String)' không tồn tại, nhưng 'setCustomTitle (View)', như bạn đã sử dụng, không. –

+0

Đúng, làm việc hoàn hảo. Cảm ơn!! –

0

Trên thực tế các "sửa" trả lời ở đây là sai. Nó chỉ ra bạn có thể thiết lập các dòng tối đa đến hơn 2 trong AlertDialog. Dưới đây là một ví dụ:

AlertDialog closePlayerDialog; 
......... 
Builder builder = new AlertDialog.Builder(this); 
builder.setMessage(getString(R.string.AskToClosePlayer)) 
     .setPositiveButton(R.string.Yes, dialogClickListener) 
     .setNeutralButton(R.string.NoJustCloseApp, dialogClickListener) 
     .setNegativeButton(R.string.NoContinue, dialogClickListener); 
closePlayerDialog = builder.create(); 
closePlayerDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
    public void onShow(DialogInterface dialog) { 
     float textSize = 12.0f; 
     Button positive = closePlayerDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
     positive.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
     positive.setMaxLines(3); 
     Button neutral = closePlayerDialog.getButton(AlertDialog.BUTTON_NEUTRAL); 
     neutral.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
     neutral.setMaxLines(3); 
     Button negative = closePlayerDialog.getButton(AlertDialog.BUTTON_NEGATIVE); 
     negative.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
     negative.setMaxLines(3); 
    } 
}); 
closePlayerDialog.setCancelable(false);  
closePlayerDialog.show(); 

Về cơ bản bạn chỉnh sửa các thành phần của AlertDialog onShow, sử dụng DialogInterface.onShowListener.

+0

Bạn không hiển thị cách thay đổi số dòng của tiêu đề, nhưng của các nút. Không có 'dialog.getTitleBar' hoặc tương tự? –

+0

@ LuisA.Florit Thật ra bạn đúng Luis. Vì vậy, trong trường hợp đó, bạn có thể xóa thanh tiêu đề mặc định, chính xác như bạn muốn và sau đó đặt chế độ xem văn bản tùy chỉnh của riêng bạn ở đầu bố cục tùy chỉnh của bạn. Dòng bạn đang tìm kiếm để xóa thanh tiêu đề hiện có là: dialog.requestWindowFeature (Window.FEATURE_NO_TITLE); – Radu

Các vấn đề liên quan