2013-09-04 19 views
7

tôi đã sử dụng các dòng sau đây trong manifest của tôi:Hiện nhẹ AlertDialog sử dụng Theme.Light.NoTitleBar

android:theme="@android:style/Theme.Light.NoTitleBar" 

không có thanh tiêu đề và hiển thị phiên bản ánh sáng của AlertDialog trong ứng dụng của tôi, như trong ví dụ: enter image description here

Nhưng nó hiển thị trong chủ đề tối vẫn:

enter image description here

My Dialog Java đồng de:

new AlertDialog.Builder(FreeDraw.this) 
    .setIcon(android.R.drawable.ic_dialog_alert) 
    .setTitle("Clear Drawing?") 
    .setMessage("Do you want to clear the drawing board?") 
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      finish(); 
      startActivity(getIntent()); 
     } 
    }) 
    .setNegativeButton("No", null) 
    .show(); 

Làm cách nào để giữ ánh sáng chủ đề cho AlertDialog?

Trả lời

26

Hộp thoại trên cùng trong bài đăng của bạn là hộp thoại theo chủ đề Holo Light trong khi hộp thoại dưới cùng là hộp thoại theo chủ đề cũ hơn. Bạn không thể nhận được hộp thoại theo chủ đề Holo Light trên các phiên bản bên dưới Honeycomb. Dưới đây là một đoạn trích nhỏ tôi sử dụng để chọn chủ đề sáng dựa trên phiên bản Android mà thiết bị đang chạy.

AlertDialog.Builder sẽ sử dụng chủ đề của ngữ cảnh được truyền. Bạn có thể sử dụng một ContextThemeWrapper để thiết lập điều này.

ContextThemeWrapper themedContext; 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    themedContext = new ContextThemeWrapper(FreeDraw.this, android.R.style.Theme_Holo_Light_Dialog_NoActionBar); 
} 
else { 
    themedContext = new ContextThemeWrapper(FreeDraw.this, android.R.style.Theme_Light_NoTitleBar); 
} 
AlertDialog.Builder builder = new AlertDialog.Builder(themedContext); 
+0

Tôi thấy rằng trên điện thoại chạy JB 4.2.2 – Si8

+0

Bạn đã thử mã trong câu trả lời của tôi chưa? –

+0

Tôi đã thử, nó hoạt động, cảm ơn. –

3

Bạn phải sử dụng số AlertDialog Builder. Với nó, bạn có thể thiết lập một phong cách cho Dialog của bạn. Nhìn ví dụ sau: http://pastebin.com/07wyX0V3

<style name="popup_theme" parent="@android:style/Theme.Light"> 
    <item name="android:windowBackground">@color/back_color</item> 
    <item name="android:colorBackground">@color/back_color</item> 
</style> 
+0

Tôi đã sử dụng nó. Cập nhật câu hỏi của tôi :) – Si8

+0

Nhưng bạn phải đặt kiểu như -> xem chỉnh sửa của tôi – JavaDM

+0

Tôi sẽ thử và cập nhật cho bạn. Cảm ơn. – Si8

13

Bạn có thể sử dụng một cái gì đó như thế này khi tạo bạn AlertDialog:

AlertDialog.Builder builder = null; 
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { 
    builder = new AlertDialog.Builder(BaseActivity.this); 
} else { 
    builder = new AlertDialog.Builder(BaseActivity.this, AlertDialog.THEME_HOLO_LIGHT); 
} 
// ... do your other stuff. 

Mã này sẽ tạo Holo theo kiểu AlertDialog trong các phiên bản mới hơn và thiết bị bình thường dựa AlertDialog trên các thiết bị với phiên bản Android cũ hơn.

+0

Công trình này tuyệt vời. Cảm ơn. – Mahm00d

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