2015-03-20 18 views
11

Tôi cố gắng để nhận được thông báo và các dòng mã sau đây hoạt động:Làm thế nào để có được tiêu đề AlertDialog?

TextView dialogMessage = (TextView)dialogObject.findViewById(android.R.id.message); 

Nhưng khi tôi cố gắng để có được danh hiệu bằng cách sử dụng dòng sau nó trả null

TextView dialogTitle = (TextView)dialogObject.findViewById(android.R.id.tittle); 
+0

id là 'alertTitle', tôi không chắc chắn nó có thể hiển thị bên ngoài không. Hãy thử với 'android.R.id.alertTitle' – Blackbelt

+0

không có cảnh báo idTiêu đề – alitha

Trả lời

22

Tôi đã kiểm tra lên mã của số AlertDialog. Nội bộ họ sử dụng R.id.alertTitle để khởi tạo tiêu đề AlertDialogTextView. Bạn có thể sử dụng getIdentifier để lấy nó:

int titleId = getResources().getIdentifier("alertTitle", "id", "android"); 
if (titleId > 0) { 
    TextView dialogTitle = (TextView) dialogObject.findViewById(titleId); 
    if (dialogTitle != null) { 

    } 
} 
+2

Cảm ơn đã làm việc đó :) – alitha

+2

Mặc dù những người nói không thể, đây là câu trả lời tuyệt vời. bạn xứng đáng với đai đen, cảm ơn rất nhiều. – smoothumut

+0

Bạn có tình cờ có android-fu tương tự để nhận tin nhắn :) –

0

Tôi biết đây là một bài cũ nhưng tôi sử dụng câu trả lời chấp nhận và thêm cái gì khác hữu ích cho tôi. Bạn có thể làm cho tiêu đề Dialog đa dòng (mặc định 1 dòng) bằng cách sử dụng mã bên dưới. Tôi cũng đọc tiêu đề được đặt trước vì sau này tôi đã thêm txt không đồng bộ về việc sử dụng ContentLoaders

int titleId = getResources().getIdentifier("alertTitle", "id", "android"); 
     if (titleId > 0) { 
      TextView dialogTitle = (TextView) getDialog().findViewById(titleId); 
      if (dialogTitle != null) { 
       dialogTitle.setMaxLines(4); 
       dialogTitle.setSingleLine(false); 
       String txt = dialogTitle.getText().toString(); 
       String txt1 = txt + ":\n\n" + "next line txt"; 
       dialogTitle.setText(txt1); 
      } 
     } 
Các vấn đề liên quan