2012-04-19 21 views
5

है। कस्टम शीर्षक दृश्य के विचार काफी सरल लगता है, लेकिन वहाँ कस्टम शीर्षक है कि मैं से छुटकारा पाने के नहीं कर पा रहे चारों ओर एक काले रंग की सीमा है। शीर्ष, बाएं और दाएं किनारों में एक सिंगल-पिक्सेल सीमा होती है, जबकि नीचे की ओर लगभग 5 पिक्सेल सीमा होती है।AlertDialog कस्टम शीर्षक मैं एक <code>AlertDialog</code> है कि मैं के साथ एक कस्टम संवाद दृश्य का उपयोग किया है काली बॉर्डर

जावा में संवाद बनाना:

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(); 

कस्टम शीर्षक दृश्य लेआउट, 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" 
    /> 

मैं क्या देखें:

screenshot broken

क्या मैं देखना चाहता हूँ:

screenshot fixed

कोई विचार?

+0

आवश्यक TextView में रिश्तेदार लेआउट और छाया में गद्दी है ..? – ngesh

+1

@ सैंडी मेला सवाल। मैंने उन बिट्स को हटा दिया, और परिणाम वही है, सिवाय इसके कि नीचे का काला सीमा अब बड़ी है। –

+0

जब एक्सएमएल बढ़ सच करने के लिए 'attachToRoot' स्थापित करने के लिए प्रयास करें। – dreamtale

उत्तर

0

यह एंड्रॉयड के द्वारा बनाई गई आप अलर्ट पर एक शीर्षक है जब परिणाम है। स्क्रीन-शॉट्स के बारे में मैं क्या देख सकता हूं, अलर्ट का "बॉडी" भी एक कस्टम व्यू है, न कि चेतावनी संदेश संपत्ति।

तो परिणाम आप चाहते हैं के लिए सबसे आसान तरीका चेतावनी के कस्टम दृश्य में शीर्षक लेआउट जोड़ना है।

उदाहरण:

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(); 

कहाँ bodyView.addview(titleView); चेतावनी का अपने शरीर पर शीर्षक लेआउट कहते हैं।

और productDialog.setView(bodyView); कस्टम अलर्ट को आपके अलर्ट के बॉडी के रूप में सेट करता है।

+1

कस्टम 'डायलॉग' के पक्ष में आपके दृष्टिकोण को 'अलर्टडिअलॉग' को छोड़ने का क्या फायदा है? मेरे लिए, 'अलर्टडिअलॉग' का उपयोग करने का बिंदु यह है कि पहले से ही एक शीर्षक और एक शरीर है जिसे मैं आसानी से भर सकता हूं। –

+0

मैं बस सुझाव दे रहा हूं कि आप "बॉडी" व्यू पर शीर्षक दृश्य जोड़ सकते हैं। जो सीमा के साथ इस मुद्दे को हल करेगा। क्योंकि शीर्षक शीर्षक और संदेश के बीच डिफ़ॉल्ट रूप से सेट किया गया है! –

3

इस प्रयास करें:

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);