Android Dialog: टाइटल बार को हटा रहा है


108

मेरे पास एक अजीब व्यवहार है जिसके स्रोत को मैं इंगित नहीं कर सकता।

मेरे पास क्लासिक के साथ अपना ऐप है

requestWindowFeature(Window.FEATURE_NO_TITLE);

शीर्षक / स्थिति पट्टी को निकालने के लिए।

फिर मैं उपयोगकर्ता को जानकारी (नाम आदि) दर्ज करने की अनुमति देने के लिए एक डायलॉग बॉक्स बनाता हूं

एक भौतिक कीबोर्ड के साथ, कोई समस्या नहीं है लेकिन जब मैं आभासी कीबोर्ड का उपयोग करता हूं तो मेरे पास एक अजीब व्यवहार होता है:

हर बार जब मैं वर्चुअल की बोर्ड पर एक कुंजी मारता हूं तो शीर्षक / स्टेटस बार फिर से सभी कीबोर्ड लेआउट को धकेलता है और फिर से गायब हो जाता है (जब मैं आवेदन शुरू करता हूं तो एनीमेशन की तरह)

यहाँ कुछ कोड है:

        dialog = new Dialog(context);
        dialog.setContentView(R.layout.logindialog);
        dialog.setTitle("Login:");

        WindowManager.LayoutParams a = dialog.getWindow().getAttributes();

//      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

        a.dimAmount = 0;
        dialog.getWindow().setAttributes(a);

        dialog.setCancelable(true);
        dialog.getWindow().setLayout(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);

और फिर

dialog.show();

मैंने कोशिश की

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

लेकिन यह मेरे ऐप को क्रैश कर देता है।

यहाँ xml है

    <TextView android:id="@+id/LoginText"
        android:gravity="fill"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login:">
    </TextView>         
    <EditText android:id="@+id/LoginEdit"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="jason"
        android:layout_width="200sp"/>
    <TextView android:id="@+id/PasswordText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password:">
    </TextView>         
    <EditText android:id="@+id/PasswordEdit"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="welcome"
        android:layout_width="200sp"
        android:password="true"/>
<LinearLayout 
    android:id="@+id/test2"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
<Button android:id="@+id/LoginButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Login" />
<Button android:id="@+id/CreateButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Create" />
<Button android:id="@+id/CancelLogin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Cancel" />
</LinearLayout>/>


जब आप डायलॉग का उपयोग करते हैं तो अपना लॉगकाट पोस्ट करें ।requestWindowFeature (Window.FEATURE_NO_TITLE); कोड की उपरोक्त लाइन का उपयोग करते समय भी डायलॉगसेट का उपयोग न करें ("लॉगिन:");
12गौरभ

सुझाव के लिए धन्यवाद, लेकिन इसकी समस्या नहीं है। क्या होता है जब मैं कीबोर्ड के साथ कुछ टाइप करता हूं, तो स्टेटस बार प्रत्येक कुंजी स्ट्रोक के साथ दिखाई और गायब होता रहता है।
जेसन रोजर्स

जवाबों:


434

उपयोग,

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before     
dialog.setContentView(R.layout.logindialog);

सुझाव के लिए धन्यवाद, लेकिन इसकी समस्या नहीं है। क्या होता है जब मैं कीबोर्ड के साथ कुछ टाइप करता हूं, तो स्टेटस बार प्रत्येक कुंजी स्ट्रोक के साथ दिखाई और गायब होता रहता है।
जेसन रोजर्स

9
कुछ उपकरणों पर यह डायलॉग लेआउट को इसकी चौड़ाई खोने का कारण बनता है, लेकिन इसे ऊंचाई पर रखें। मैंने पाया कि .show () को जोड़ने से पहले ही यह तय कर दिया था कि वे xml लेआउट में पहले से ही सेट थे। Dial.getWindow ()। setLayout (WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
a54studio

1
DialogFragment के वारिस के मामले में हमें getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);अंदर रखना होगा onCreateView
एंटन होलोविन

1
यदि आप dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
AppCompatDialog

24

style.xml में नई शैली बनाएँ

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

फिर इसे अपने प्रकट में जोड़ें:

 <activity android:name=".youractivity" android:theme="@style/myDialog"></activity>

14

उपरोक्त सभी उत्तर मेरे लिए AppCompatDialog के लिए काम नहीं कर रहे हैं

यदि आप AppCompatDialog का उपयोग कर रहे हैं तो यह प्रयास करें

महत्वपूर्ण नोट: कॉल करने से पहले यह सेट करें

dialog.supportRequestWindowFeature (Window.FEATURE_NO_TITLE);


धन्यवाद, वह मेरा मुद्दा था, मुझे पागल कर रहा था।
23

5

अपना XML बनाएँ जो संवाद में दिखाया गया है, यह गतिविधि_नो_टिटेल_डायलॉग है

final Dialog dialog1 = new Dialog(context);
dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog1.setContentView(R.layout.activity_no_title_dialog);
dialog1.show();

2

तुम भी शीर्षक पट्टी प्रदर्शित नहीं करने के लिए Android प्रकट फ़ाइल में थीम को परिभाषित कर सकते हैं ..

आप केवल उस android:theme="@android:style/Theme.Light.NoTitleBar"गतिविधि को विषय में परिभाषित करते हैं, जहाँ आप शीर्षक बार प्रदर्शित नहीं करना चाहते हैं

उदाहरण:-

    <uses-sdk android:minSdkVersion="4"android:targetSdkVersion="4" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".splash"
              android:label="@string/app_name" android:screenOrientation="portrait"
              android:theme="@android:style/Theme.Light.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

<activity android:name="main" android:screenOrientation="portrait" android:theme="@android:style/Theme.Light.NoTitleBar"></activity>


मेरे पास पहले से ही स्थिति बार के बिना एक गतिविधि है, लेकिन जब मैं वायरल कीबोर्ड पर टाइप कर रहा हूं तो स्थिति पट्टी दिखाई देती है और गायब हो जाती है (सभी लेआउट को धक्का देते हुए) जैसे आप गतिविधि शुरू करते हैं और स्थिति पट्टी गायब हो जाती है। केवल इस बार इसके हर बार मैं कीबोर्ड को छूता हूं
जेसन रोजर्स

2

यदि आप एक कस्टम दृश्य का उपयोग कर रहे हैं, तो इस तरह की सामग्री को देखने से पहले विंडो सुविधा का अनुरोध करने के लिए फिर से तैयार करें

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.show();

1

सेट कॉनकंटव्यू से पहले नीचे दिए गए कोड का उपयोग करें: -

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.custom_dialog);

नोट: - उपरोक्त कोड को ऊपर उपयोग करना होगाdialog.setContentView(R.layout.custom_dialog);

XML में एक थीम का उपयोग करें

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

भी स्टाइल। xml:

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

और तब:

Dialog dialog_hidetitle_example = new Dialog(context, R.style.hidetitle);

1

मैं एक एंड्रॉइड नौसिखिया हूं और इस सवाल के साथ एक टाइटल बार से छुटकारा पाने की कोशिश कर रहा हूं।

मैं एक गतिविधि का उपयोग कर रहा हूं और इसे एक संवाद के रूप में प्रदर्शित कर रहा हूं। मैं थीम के साथ इधर-उधर घूम रहा था और डिफ़ॉल्ट थीम के एक उपयोगी बिट पर आ गया।

यहाँ मेरा कोड है AndroidManifest.xmlजो मैं उपयोग कर रहा था जब शीर्षक बार दिखा रहा था:

<activity
    android:name=".AlertDialog"
    android:theme="@android:style/Theme.Holo.Dialog"

    >

</activity>

यहां वह परिवर्तन है जो मुझे मेरा वांछित परिणाम मिला है:

<activity
    android:name=".AlertDialog"
    android:theme="@android:style/Theme.Holo.Dialog.NoActionBar"

    >

</activity>

जैसा कि मैंने कहा, मैं अभी भी एंड्रॉइड के लिए नया हूं, इसलिए इसके अवांछनीय साइड-इफेक्ट्स हो सकते हैं, लेकिन इससे मुझे वह परिणाम मिला है जो मुझे चाहिए था, जो कि डायलॉग से टाइटल बार को हटाने के लिए था।


1

मैं अगले संस्करण का उपयोग कर रहा हूँ:

मेरे कस्टम संवाद की गतिविधि:

public class AlertDialogue extends AppCompatActivity {

    Button btnOk;
    TextView textDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_alert_dialogue);

        textDialog = (TextView)findViewById(R.id.text_dialog) ;
        textDialog.setText("Hello, I'm the dialog text!");

        btnOk = (Button) findViewById(R.id.button_dialog);
        btnOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
}

activity_alert_dialogue.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    tools:context=".AlertDialogue">

    <TextView
        android:id="@+id/text_dialog"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="24dp"
        android:text="Hello, I'm the dialog text!"
        android:textColor="@android:color/darker_gray"
        android:textSize="16dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button_dialog"
        android:layout_width="wrap_content"
        android:layout_height="36dp"
        android:layout_margin="8dp"
        android:background="@android:color/transparent"
        android:text="Ok"
        android:textColor="@android:color/black"
        android:textSize="14dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/text_dialog" />


</android.support.constraint.ConstraintLayout>

मैनिफ़ेस्ट:

<activity android:name=".AlertDialogue"
            android:theme="@style/AlertDialogNoTitle">
</activity>

अंदाज:

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

1

अगले संस्करण के साथ मेरी कोई प्रतिक्रिया नहीं है:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before     
dialog.setContentView(R.layout.logindialog);

इसलिए, मैं अगले उपयोग करने की कोशिश करता हूं:

dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE); //before     
dialog.setContentView(R.layout.logindialog);

यह वेरिएंट बेहतरीन काम करता है।


0

इसने मेरे लिए काम किया।

Dailog dialog = new Dialog(MyActivity.this, R.style.dialogstyle);

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="dialogstyle" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@null</item>
        <item name="android:windowNoTitle">false</item>
    </style>
</resources>

0

आप इस सरल Android संवाद पॉपअप लाइब्रेरी को आज़मा सकते हैं । अपनी गतिविधि पर उपयोग करना बहुत सरल है।

जब सबमिट बटन पर क्लिक किया जाता है, तो अपने कोड में उपर्युक्त देयता शामिल करने के बाद कोड का प्रयास करें

Pop.on(this)
   .with()
   .title(R.string.title) //ignore if not needed
   .icon(R.drawable.icon) //ignore if not needed
   .cancelable(false) //ignore if not needed
   .layout(R.layout.custom_pop)
   .when(new Pop.Yah() {
       @Override
       public void clicked(DialogInterface dialog, View view) {
           Toast.makeText(getBaseContext(), "Yah button clicked", Toast.LENGTH_LONG).show();
       }
   }).show();

अपने ग्रेड में एक पंक्ति जोड़ें और आप जाने के लिए अच्छा है

dependencies {
    compile 'com.vistrav:pop:2.0'
}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.