दिलचस्प पोस्ट
जावास्क्रिप्ट में मठ के साथ यादृच्छिकता कैसे हासिल की जाती है? ASP.NET MVC में IEnumerable मॉडल के साथ कस्टम संपादक टेम्पलेट का उपयोग करने के लिए सही, मुहावरेदार तरीका फायरबसे (एफसीएम): अधिसूचना पर खुला गतिविधि और पास डेटा क्लिक करें एंड्रॉयड .NET में एक ऑब्जेक्ट को serializing करते समय सभी xsi और xsd नामस्थानों को छोड़कर? हमें फैक्ट्री डिजाइन पैटर्न की आवश्यकता क्यों है? जावा POJOs में क्षेत्र, चर, विशेषता, और संपत्ति के बीच अंतर क्या है? सी ++ 11 ऑटो कीवर्ड के साथ कितना बड़ा है? गैर-शॉर्ट-सर्किट लॉजिकल ऑपरेटरों के अस्तित्व का कारण बिटटॉर्वा ऑपरेटरों का उपयोग करते हुए बीटाकाउंट कैसे कार्यान्वित करें? सत्र और एचटीटीपीकॉन्टेक्स के बीच अंतर। वर्तमान सत्र fastcgi_finish_request () का उपयोग करने का उदाहरण प्रकार int का कन्स्ट्रक्टर हस्तांतरण है क्या कंटेंट कम्प्लिकेशनउपयोगकर्ता जानकारी जटिलता अपडेट के लिए अधिक उपयुक्त है? क्या मैं टी-एसक्यूएल में बराबर के लिए = या <> का उपयोग करना चाहिए? पूरी तरह से योग्य डीबी पथ नाम के साथ SQLiteOpenHelper समस्या

एंड्रॉइड: शीर्षक के बिना डायलॉग कैसे बनाएं?

मैं एंड्रॉइड में एक कस्टम संवाद बनाने की कोशिश कर रहा हूं। मैं इस तरह अपना संवाद बनाता हूं:

dialog = new Dialog(this); dialog.setContentView(R.layout.my_dialog); 

एवरीथिंग डायलॉग के शीर्षक के अलावा ठीक काम करती है यहां तक ​​कि अगर मैं संवाद का शीर्षक सेट नहीं करता, तो संवाद पॉपअप में संवाद की स्थिति में रिक्त स्थान होता है।

क्या संवाद के इस हिस्से को छुपाने का कोई तरीका है?

मैंने इसे एक चेतावनी डायलॉग के साथ की कोशिश की लेकिन ऐसा लगता है कि लेआउट ठीक से सेट नहीं है:

 LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.map_dialog, null); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(view); // dialog = new Dialog(this); // dialog.setContentView(R.layout.map_dialog); dialog = builder.create(); ((TextView) dialog.findViewById(R.id.nr)).setText(number); 

अगर मैं इस कोड का उपयोग करता हूं, तो मुझे अंतिम पंक्ति में एक रिक्त पॉइंटर अपवाद प्राप्त होता है। यह संवाद निरर्थक नहीं है, इसलिए मैं मौजूद नहीं होने वाले टेक्स्टव्यू को पुनर्प्राप्त करने का प्रयास करता हूं।
अगर मैं उस भाग को हटाना चाहता हूं जहां मैं डायलॉग कन्स्ट्रक्टर का उपयोग करता हूं तो सबकुछ ठीक काम करता है, लेकिन मेरे संवाद लेआउट के ऊपर शीर्षक के लिए

Solutions Collecting From Web of "एंड्रॉइड: शीर्षक के बिना डायलॉग कैसे बनाएं?"

आप इस का उपयोग करते हुए एक डायलॉग का शीर्षक छिपा सकते हैं:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);


इस उत्तर का पिछला संस्करण, जो अधिक जटिल है:

आपको एक AlertDialog का उपयोग करना AlertDialog कस्टम डेवलपर्स के बारे में एंड्रॉइड डेवलपर की साइट पर एक अच्छी स्पष्टीकरण है।

बहुत ही संक्षिप्त सारांश में, आप कोड के साथ ऐसा करते हैं जैसे आधिकारिक वेबसाइट से नीचे कॉपी की गई। यह कस्टम लेआउट फ़ाइल लेता है, इसे फुलाता है, इसे कुछ मूल पाठ और आइकन देता है, फिर इसे बनाता है आप इसे तब दिखाएंगे जब alertDialog.show()

 AlertDialog.Builder builder; AlertDialog alertDialog; Context mContext = getApplicationContext(); LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.layout_root)); TextView text = (TextView) layout.findViewById(R.id.text); text.setText("Hello, this is a custom dialog!"); ImageView image = (ImageView) layout.findViewById(R.id.image); image.setImageResource(R.drawable.android); builder = new AlertDialog.Builder(mContext); builder.setView(layout); alertDialog = builder.create(); 

टिप्पणी के जवाब में:

मुझे लगता है कि TextView को आईडी nr साथ View view = inflater.... साथ आप बढ़ रहे हैं। यदि हां, तो आपको सिर्फ एक बिट को बदलने की आवश्यकता है: dialog.findView... बजाय। dialog.findView... इसे देखने view.findView...view.findView... तब एक बार आपने ऐसा किया है, तो बिल्डर का उपयोग करने के लिए परेशान किए बिना dialog.show (), या यहां तक ​​कि बिल्डर.शो () का उपयोग करना याद रखें।

खरोंच से संवाद बनाते समय FEATURE_NO_TITLE कार्य करता है, जैसे:

 Dialog dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

लेकिन यह एक अलर्टडायलोग (या बिल्डर का उपयोग) बनाने पर काम नहीं करता, क्योंकि यह पहले से ही शीर्षक को अक्षम करता है और आंतरिक रूप से एक कस्टम का उपयोग करता है

मैंने एसडीके स्रोतों को देखा है, और मुझे लगता है कि इसे आसपास काम नहीं किया जा सकता। तो शीर्ष अंतराल को दूर करने के लिए, डायलॉग क्लास का सीधे उपयोग करके, स्क्रैच आईएमओ से एक कस्टम संवाद बनाने का एकमात्र समाधान है

इसके अलावा, कोई भी शैली के साथ ऐसा कर सकता है, जैसे कि styles.xml में:

 <style name="FullHeightDialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> </style> 

और तब:

 Dialog dialog = new Dialog(context, R.style.FullHeightDialog); 

आपके कोड में इस लाइन को जोड़ें

 requestWindowFeature(Window.FEATURE_NO_TITLE); 

या एक्सएमएल में एक थीम का इस्तेमाल होता है

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

एक्सएमएल एक अच्छा कार्यान्वयन होगा जैसा कि कोड संस्करण के साथ शीर्षक बार बनाया जाता है और फिर हटाया जाता है जो संसाधन की बर्बादी है

अच्छा प्रयास है लेकिन यह काम नहीं कर रहा है। मुझे मिलता है: एंड्रॉइड.दृश्य.विंडो प्रबंधक $ BadTokenException: खिड़की जोड़ने में असमर्थ – टोकन नल किसी अनुप्रयोग के लिए नहीं है अगर मैं संवाद को दोहरा करना चाहता हूं।

चेतावनी संवाद प्रकार को सिस्टम संवाद में बदलें (जैसे, TYPE_SYSTEM_OVERLAY) और देखें कि क्या यह आपकी समस्या को हल करता है

इस तरह प्रयोग करें:

 Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

इससे संवाद विंडो से कोई भी शीर्षक बार निकाल दिया जाएगा

setcontentview से पहले कोड का प्रयोग करें: –

  Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.custom_dialog); 

नोट : आपको ऊपर कोड होना चाहिए, उसी क्रम और रेखा में। requestWindowFeature setContentView लाइन से पहले होना चाहिए।

आप द्वारा शीर्षक हटा सकते हैं

 dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

जहां संवाद मेरे संवाद का नाम है

आपके कोड में यदि आप requestWindowFeature(Window.FEATURE_NO_TITLE); उपयोग करते हैं requestWindowFeature(Window.FEATURE_NO_TITLE); सुनिश्चित करें कि यह dialog.setContentView(); से पहले चला जाता है dialog.setContentView(); अन्यथा यह एप्लिकेशन को क्रैश करने का कारण बनता है।

मुझे ऐसा करने के तीन तरीके मिले हैं>

1) अनुरोध का उपयोग करना WindowFeature

 Dialog dialog = new Dialog(this); dialog.requestWindowFeature(dialog.getWindow().FEATURE_NO_TITLE); 

2) शैली का उपयोग करना (style.xml)

 <style name="FullHeightDialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> </style> Dialog dialog = new Dialog(context, R.style.FullHeightDialog); 

3) AndroidManifest.xml में XML थीम का उपयोग करना

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

आपके Custom_Dialog.java वर्ग में requestWindowFeature(Window.FEATURE_NO_TITLE) जोड़ने के लिए requestWindowFeature(Window.FEATURE_NO_TITLE)

 public class Custom_Dialog extends Dialog { protected Custom_Dialog(Context context, int theme) { super(context, theme); // TODO Auto-generated constructor stub requestWindowFeature(Window.FEATURE_NO_TITLE); //This line } } 

ओलिविएर्ग का उत्तर मेरे लिए काम करता है और सबसे अच्छा समाधान है अगर कोई कस्टम डायलॉग क्लास बना रहा है तो वह मार्ग है जिसे आप जाना चाहते हैं। हालांकि, यह मुझे परेशान करता था कि मैं अलर्टडायलाॉग कक्षा का उपयोग नहीं कर सका। मैं डिफ़ॉल्ट सिस्टम AlertDialog शैली का उपयोग करने में सक्षम होना चाहता था। एक कस्टम संवाद वर्ग बनाने के लिए यह शैली नहीं होगी

इसलिए मुझे एक समाधान मिला (हैक) जो एक कस्टम वर्ग बनाने के बिना काम करेगा, आप मौजूदा बिल्डरों का उपयोग कर सकते हैं।

AlertDialog शीर्षक के लिए प्लेसहोल्डर के रूप में आपकी सामग्री दृश्य के ऊपर एक दृश्य डालता है। यदि आप दृश्य देखते हैं और ऊंचाई 0 पर सेट करते हैं, तो अंतरिक्ष दूर हो जाता है।

मैंने इसे 2.3 और 3.0 पर परीक्षण किया है, यह संभव है कि यह अभी तक हर संस्करण पर काम नहीं करता है।

ऐसा करने के दो उपयोगी तरीके यहां दिए गए हैं:

 /** * Show a Dialog with the extra title/top padding collapsed. * * @param customView The custom view that you added to the dialog * @param dialog The dialog to display without top spacing * @param show Whether or not to call dialog.show() at the end. */ public static void showDialogWithNoTopSpace(final View customView, final Dialog dialog, boolean show) { // Now we setup a listener to detect as soon as the dialog has shown. customView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // Check if your view has been laid out yet if (customView.getHeight() > 0) { // If it has been, we will search the view hierarchy for the view that is responsible for the extra space. LinearLayout dialogLayout = findDialogLinearLayout(customView); if (dialogLayout == null) { // Could find it. Unexpected. } else { // Found it, now remove the height of the title area View child = dialogLayout.getChildAt(0); if (child != customView) { // remove height LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) child.getLayoutParams(); lp.height = 0; child.setLayoutParams(lp); } else { // Could find it. Unexpected. } } // Done with the listener customView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } } }); // Show the dialog if (show) dialog.show(); } /** * Searches parents for a LinearLayout * * @param view to search the search from * @return the first parent view that is a LinearLayout or null if none was found */ public static LinearLayout findDialogLinearLayout(View view) { ViewParent parent = (ViewParent) view.getParent(); if (parent != null) { if (parent instanceof LinearLayout) { // Found it return (LinearLayout) parent; } else if (parent instanceof View) { // Keep looking return findDialogLinearLayout((View) parent); } } // Couldn't find it return null; } 

यहां बताया गया है कि इसका उपयोग कैसे किया जाता है:

  Dialog dialog = new AlertDialog.Builder(this) .setView(yourCustomView) .create(); showDialogWithNoTopSpace(yourCustomView, dialog, true); 

यदि आप इसे एक DialogFragment के साथ उपयोग कर रहे हैं, तो DialogFragment's onCreateDialog विधि को ओवरराइड करें इसके बाद ऊपर दिए गए उदाहरण की तरह अपना संवाद बनाएं और वापस लौटें। एकमात्र बदलाव यह है कि आपको 3 पैरामीटर (शो) के रूप में झूठे पास करना चाहिए ताकि वह संवाद पर शो () को कॉल न करे। डायलॉग फ्रेग्मेंट बाद में संभाल लेंगे।

उदाहरण:

 @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = new AlertDialog.Builder(getContext()) .setView(yourCustomView) .create(); showDialogWithNoTopSpace(yourCustomView, dialog, false); return dialog; } 

जैसा कि मैंने इसे आगे परीक्षण किया है, मैं किसी भी अतिरिक्त बदलाव की ज़रूरत के साथ अद्यतन करना सुनिश्चित करूँगा।

मुझे नहीं पता कि यह प्रश्न अभी भी वास्तविक है, लेकिन मेरे मामले में, जब मैंने संवाद से डायलॉग फ्रेग्मेंट पर स्विच किया,

 requestWindowFeature(Window.FEATURE_NO_TITLE); 

एक विकल्प नहीं था, लेकिन मैं इसका उपयोग कर सकता था

 setStyle(STYLE_NO_TITLE, 0); 

इसके बजाय एक ही परिणाम के साथ

बिल्डर का उपयोग करके खाली स्ट्रिंग को शीर्षक सेट करें

  Builder builder = new AlertDialog.Builder(context); builder.setTitle(""); ... builder.show(); 

"केंद्र" पर पूरे संवाद पर "गुरुत्व" विशेषता सेट करें उसके बाद आपको इस सेटिंग को उस संवाद के सभी बाल घटकों पर ओवरराइड करने की आवश्यकता होगी जो आप केंद्रित नहीं करना चाहते हैं।

 dialog=new Dialog(YourActivity.this, 1); // to make dialog box full screen with out title. dialog.setContentView(layoutReference); dialog.setContentView(R.layout.layoutexample); 

एक्सएमएल में एक विषय का उपयोग करें

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

अगर हम सिर्फ setTitle() बिना संवाद का उपयोग करते हैं, तो क्या यह शीर्षक का स्थान निकालने में काम करेगा?

 mUSSDDialog = new AlertDialog.Builder(context).setView(dialogView) .setPositiveButton(R.string.send_button,DialogListener) .setNegativeButton(R.string.cancel,DialogListener) .setCancelable(false).create(); 

सोचें कि आप अभी इसका उपयोग कर सकते हैं:

 AlertDialog dialog = new AlertDialog.Builder(this) .setView(view) .setTitle("") .create() 

आप इस तरह से Dialog क्लास से विस्तारित नई कक्षा को परिभाषित करके AlertDialog का उपयोग किए बिना ऐसा कर सकते हैं:

 public class myDialog extends Dialog { public myDialog(Context context) { super(context); requestWindowFeature(Window.FEATURE_NO_TITLE); } } 
 ProgressDialog dialog = ProgressDialog.show(MyActivity.this, "", "Loading. Please wait...", true); 

एक शीर्षक कम संवाद बनाता है

AlertDialog का उपयोग करते हुए, setTitle() का उपयोग नहीं करते हैं, शीर्षक को गायब बना देता है

हैकिंग के एक गुच्छा के बाद, मुझे यह काम करने के लिए मिला है:

  Window window = dialog.getWindow(); View view = window.getDecorView(); final int topPanelId = getResources().getIdentifier( "topPanel", "id", "android" ); LinearLayout topPanel = (LinearLayout) view.findViewById(topPanelId); topPanel.setVisibility(View.GONE); 
 public static AlertDialog showAlertDialogWithoutTitle(Context context,String msg) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); alertDialogBuilder.setMessage(msg).setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); return alertDialogBuilder.create(); } 

शीर्षक कुछ भी गायब करने के लिए आप AlertBuilder साथ ऐसा कर सकते हैं:

 TextView title = new TextView(this); title.setVisibility(View.GONE); builder.setCustomTitle(title); 
  Dialog dialog = new Dialog(getActivity()); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dialog.setCancelable(true); dialog.setContentView(R.layout.image_show_dialog_layout);