2010-09-16 14 views
39

Android'de varsayılan diyalog bileşenini yeniden yeniden ciltlemek istiyorum. Özellikle bunu yapmak istiyorum:Android'de tamamen özel bir Diyalog/Popup oluşturma (kaplama renk ve diyalog penceresini değiştirme)

  • Değişim yarı saydam beyaz varsayılan siyahtan yarı şeffaf kaplama arka plan.

  • Değişim varsayılan pencereli çerçeve sınırını, kaldırarak ve XML tanımlanan bir düzen ile değiştirerek Diyalog penceresi (sadece düğmeleri yüzen ile sınırsız bir grafik olacak. Hiçbir gerçek çerçevesini.)

Ben diyalog kutusunun (örn http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application) içinde için özel bir düzen oluşturma hakkında öğreticiler gördük ama bindirmenin rengini değiştirerek ve/veya tamamen açılan iletişim penceresini özelleştirme konusunda bir şey görmedim ve bir overla daha çevirmek "Penceresi" olmayan y.

cevap

82

bu sorunu çözmüş ve aşağıdaki adımları kullanarak özel renkli yarı saydam kaplama arka plan ile kendi özel açılan bindirme oluşturduk:

1 - En res/değerler/klasörde yeni xml dosyası oluşturun ve name it styles.xml

2 - İletişim özelliklerinizi nerede tanımlayacağınız aşağıda açıklanmıştır. İşte benimki neye benziyor. Ekran üzerinde gösterilen varsayılan yarı saydam siyah kaplamayı değiştirmek isterseniz, windowIsFloating'u false olarak ayarlamanız ve istediğiniz rengin olması için düzeninizin arka planını değiştirmeniz gerekir. İşte kullandım bunun altında benim dosyasıdır:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="CustomDialogTheme" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowBackground">@color/transparent_white</item> 
     <item name="android:windowIsFloating">false</item> 
     <item name="android:windowNoTitle">true</item> 
    </style> 
</resources> 

3 - iletişim nesnesini oluştururken sizin java kodunda Geri, bağlam VE tema hem geçer Oluşturucu kullanın. Örneğin. myDialog = new Dialog(this, R.style.CustomDialogTheme); (CustomDialogTheme, 2. adımdaki styles.xml dosyasında belirtilen ad özniteliğidir)

4 - Diyalog nesnelerinizin içerik görünümünü, iletişim kutusunun nasıl görünmesini istediğiniz bir düzene göre ayarlayın. Örneğin. Eğer iletişim ekranın ortasında görünmesini istiyorsanız myDialog.setContentView(R.layout.my_custom_overlay); , kök elemanı en android:layout_gravity

+4

bu sınırdan kurtulmakla birlikte, hala benim düzenimin etrafında siyah çizgiler bırakıyor .. Herhangi bir fikir var mı? –

19

center Bu benim için çok çalıştı ayarlanır, ancak iletişim kutusunu kapatmak için nasıl eksik. Özel düzeninizde kapatmak için bir düğmeniz varsa, dinleyiciyi nasıl ekleyeceğinizi ve iletişim penceresini nasıl kapatacağınızı buradan öğrenebilirsiniz.

final Dialog d = new Dialog(this,R.style.CustomDialogTheme); 
d.setContentView(R.layout.custom_dialog); 
d.show(); 

Button close_btn = (Button) d.findViewById(R.id.close_btn); 
close_btn.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     d.dismiss(); 
    } 
}); 
+1

Bu fazladan bilgi eklediğiniz için teşekkürler :) – justinl