2012-04-19 20 views
5

Özel bir iletişim görünümü kullandığım AlertDialog var. Özel başlık görünümü fikri yeterince basit görünüyor, ancak özel başlık etrafında kurtulmak mümkün görünmüyor siyah bir sınır var. Üst taraf, sol ve sağ taraflar tek pikselli bir kenarlığa sahiptir, alt taraf ise yaklaşık 5 piksel sınırına sahiptir.AlertDialog özel başlıkta siyah kenarlık var

Java iletişim Oluşturma:

View titleView = inflater.inflate(R.layout.part_list_item, parent, false); 
((TextView) titleView.findViewById(R.id.partName)).setText(titleText); 
AlertDialog productDialog = new AlertDialog.Builder(getContext()) 
    .setCustomTitle(titleView) 
    .setAdapter(adapter, doNothingClickListener) 
    .create(); 

Özel başlık görünümü düzeni, part_list_item.xml:

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#ff0000" 
    android:id="@+id/partName" 
    android:layout_marginLeft="6dip" 
    android:textAppearance="?android:attr/textAppearanceLargeInverse" 
    /> 

görüyorum Ne:

screenshot broken

görmek istediğim Ne:

screenshot fixed

Herhangi bir fikir?

+0

textview gerekli nispi düzeni ve gölge dolgu olduğunu ..? – ngesh

+1

@sandy Adil soru. Bu bitleri çıkardım ve sonuç şu ki, alt siyah kenarlık artık daha büyük. –

+0

XML'yi şişirirken "attachToRoot" öğesini true olarak ayarlamayı deneyin. – dreamtale

cevap

0

Bu, uyarıda bir başlığa sahip olduğunuzda android tarafından oluşturulan bir sonuçtur. Ekran görüntüleri görebildiğimden, uyarının "gövdesi" de özel bir uyarı ve uyarı mesajı özelliği değil.

İstediğiniz sonuca sahip olmanın en kolay yolu, başlık düzenini uyarının özel görünümüne eklemektir.

örnek: bodyView.addview(titleView); uyarının vücudunuzda başlık düzenini ekler

View titleView = inflater.inflate(R.layout.part_list_item, parent, false); 

View bodyView = .... 
bodyView.addview(titleView); 
((TextView) itleView.findViewById(R.id.partName)).setText(titleText); 

AlertDialog productDialog = new AlertDialog.Builder(getContext()); 
productDialog.setView(bodyView); 
... 

productDialog.create(); 

.

Ve productDialog.setView(bodyView);, özel görünümü uyarınızın gövdesi olarak ayarlar.

+1

Yaklaşımınızın 'AlertDialog' özel bir 'Dialog' lehine düşmesine ne gibi bir avantaj var? Benim için, 'AlertDialog' kullanmanın amacı, sadece bir yazı ve doldurduğum bir gövdenin var olmasıdır. –

+0

Sadece "body" görünümünde titleView'i ekleyebileceğinizi düşündürüyorum. Bu sorunu sınırla çözecek. Sınır başlık ve mesaj arasında varsayılan olarak ayarlandığından! –

3

bu deneyin:

LayoutInflater inflater = (LayoutInflater)yourClass.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
View titleView = inflater.inflate(R.layout.custom_dialog, null); 

((TextView) titleView.findViewById(R.id.partName)).setText("Your Title"); 
alert1.setCustomTitle(titleView); 
İlgili konular