2013-03-07 21 views
11

Uyarı iletişim kutusunda başlık başlığının ayırıcı rengini değiştirmek veya değiştirmek istedim. Bu soruyu araştırıyorum ve bunun için çok fazla insan olduğunu düşünüyorum. Ancak hala doğru çözümü bulamıyorum. Bunu aşağıdaki değiştirmek istiyorum. Blue header dividerUyarı iletişim kutusu üstbilgisi renk değiştirici nasıl değiştirilir

+0

Eğer setDivider yöntemini denedi? uyarı diyaloglarında var mı? – Paschalis

+0

bunu ayarlayabilirsiniz .. – Janmejoy

+0

Eski android sürümler için kostüm iletişim oluşturdum ama daha yeni android sürümü için bu mavi bölücü rengini değiştirmek istiyorum. eski sürüm için tamamen özel iletişimimi oluşturuyorum. Ama daha yüksek versiyonlar için kullanmak istemiyorum. Yani sorun bu. Bunu değiştirmenin herhangi bir yolu. – nilkash

cevap

0

Kaynak tarafından bakıldığında, bu rengin kodlanmış olduğu anlaşılıyor. Bunu bir hata olarak düşünürüm, stil sahibi imho olmalı.

Kolay bir geçici çözüm de olsa: setStyle(DialogFragment.STYLE_NO_TITLE, R.style.myStyle); kullanın ve ilk öğenin başlığınız olduğu basit bir doğrusal düzen yazın. Aslında çok basit bir saldırı tarafından AlertDialog başlığının rengini değiştirebilir

+2

altında setStyle'a ne uygulıyorsunuz? AlertDialogs için böyle bir yöntem yoktur (görebildiğim). Eğer bu işe yararsa, cevabınızı kabul etmekten mutluluk duyarım. – PeteH

+1

DialogFragment'in onCreate uygulamasında kullanıyorum (ve parçalardan ziyade iletişim parçalarını kullanmanızı tavsiye ediyorum: http://stackoverflow.com/questions/13765127/dialogfragment-advantages-over-alertdialog) – Teovald

15

:

public static void brandAlertDialog(AlertDialog dialog) { 
    try { 
     Resources resources = dialog.getContext().getResources(); 
     int color = resources.getColor(...); // your color here 

     int alertTitleId = resources.getIdentifier("alertTitle", "id", "android"); 
     TextView alertTitle = (TextView) dialog.getWindow().getDecorView().findViewById(alertTitleId); 
     alertTitle.setTextColor(color); // change title text color 

     int titleDividerId = resources.getIdentifier("titleDivider", "id", "android"); 
     View titleDivider = dialog.getWindow().getDecorView().findViewById(titleDividerId); 
     titleDivider.setBackgroundColor(color); // change divider color 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
} 
+1

Bu "gelecek" güvenli mi? – loeschg

+0

Alabileceğiniz en güvenli Biliyorum – MatrixDev

+2

Test ettiğim tüm Android sürümlerinde çalışmıyor. – Patrick

4

Bölücü rengi: -

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
builder.setTitle(R.string.dialog) 
    .setIcon(R.drawable.ic) 
    .setMessage(R.string.dialog_msg); 
Dialog d = builder.show(); 
int dividerId = d.getContext().getResources().getIdentifier("android:id/titleDivider", null, null); 
View divider = d.findViewById(dividerId); 
divider.setBackgroundColor(getResources().getColor(R.color.my_color)); 
+1

Buradaki anahtar, '.show()' nı ilk olarak çalıştırmak ve ardından bölücü Görünümü ve güncelleştirmeleri yapmak için iletişim kutusuna erişmek, vs. Bunu ilk başta özledim - iletişim kutusunu göstermeden önce renk güncellemesini yapmaya çalışmaktı, ve çalışmıyordu. Güzel özlü örnek - teşekkürler – gnB

-1
QustomDialogBuilder qustomDialogBuilder = new QustomDialogBuilder(context). 
     setTitle("Set IP Address"). 
     setTitleColor("#FF00FF"). 
     setDividerColor("#FF00FF"). 
     setMessage("You are now entering the 10th dimension."). 
qustomDialogBuilder.show();