it-swarm.com.de

Android Dialog: Titelleiste entfernen

Ich habe ein seltsames Verhalten, dessen Quelle ich nicht genau bestimmen kann.

Ich habe meine App mit dem Klassiker

requestWindowFeature(Window.FEATURE_NO_TITLE);

um die Titel-/Statusleiste zu entfernen.

Ich erstelle dann ein Dialogfeld, in das der Benutzer Informationen eingeben kann (Name usw.).

Mit einer physischen Tastatur kein Problem, aber wenn ich die virtuelle Tastatur benutze, habe ich ein seltsames Verhalten:

jedes Mal, wenn ich eine Taste auf der virtuellen Tastatur drücke, wird die Titel-/Statusleiste erneut angezeigt und das gesamte Tastaturlayout wird verschoben. Dann verschwindet sie wieder (genau wie die Animation, wenn ich die Anwendung starte).

hier ist ein Code:

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

und dann

dialog.show();

Ich habe es versucht

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

aber es stürzt meine app.

hier ist die 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>/>
106
Jason Rogers

verwenden,

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

erstellen Sie einen neuen Stil in styles.xml

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

dann füge dies zu deinem Manifest hinzu:

 <activity Android:name=".youractivity" Android:theme="@style/myDialog"></activity>
24
Pratik Bhat

Alle oben genannten Antworten funktionieren bei mir nicht für AppCompatDialog

Wenn Sie AppCompatDialog verwenden, versuchen Sie dies

Wichtiger Hinweis: Stellen Sie dies ein, bevor Sie setContentView aufrufen.

dialog.supportRequestWindowFeature (Window.FEATURE_NO_TITLE);

14
Ranjith Kumar

erstellen Sie Ihre XML-Datei, die im Dialogfeld hier als activity_no_title_dialog angezeigt wird

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

wenn Sie eine benutzerdefinierte Ansicht verwenden, denken Sie daran, die Fensterfunktion anzufordern, bevor Sie eine Inhaltsansicht wie diese hinzufügen

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.show();
2
Mehroz Munir

Sie können das Thema auch in Android Manifestdatei für nicht angezeigte Titelleiste) definieren.

Sie definieren einfach das Thema Android:theme="@Android:style/Theme.Light.NoTitleBar" in Aktivitäten, in denen keine Titelleiste angezeigt werden soll

Beispiel: -

    <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
Mohit Kanada

benutze den folgenden Code vor setcontentview: -

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

Anmerkung: - der obige Code muss den obigen dialog.setContentView(R.layout.custom_dialog); verwenden

In XML verwenden Sie ein Thema

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

auch styles.xml:

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

Und dann:

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

Ich bin ein Android Neuling und bin auf diese Frage gestoßen, als ich versucht habe, eine Titelleiste loszuwerden.

Ich verwende eine Aktivität und zeige sie als Dialog an. Ich habe mich mit Themen beschäftigt und bin auf ein nützliches Stück Standard-Theming gestoßen.

Hier ist der Code aus meinem AndroidManifest.xml, Den ich verwendet habe, als die Titelleiste angezeigt wurde:

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

    >

</activity>

Hier ist die Änderung, die mir mein gewünschtes Ergebnis gebracht hat:

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

    >

</activity>

Wie gesagt, ich bin noch neu in Android, daher kann dies unerwünschte Nebenwirkungen haben, aber es scheint mir das gewünschte Ergebnis gebracht zu haben, nämlich die Titelleiste aus dem Dialogfeld zu entfernen.

1
mbm29414

Ich benutze die nächste Variante:

Aktivität meines benutzerdefinierten Dialogs:

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>

Manifest:

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

Style:

<style name="AlertDialogNoTitle" parent="Theme.AppCompat.Light.Dialog">
        <item name="Android:windowNoTitle">true</item>
</style>
1
V.March

Mit der nächsten Variante habe ich keine Reaktion:

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

Also versuche ich als nächstes zu benutzen:

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

Diese Variante funktioniert hervorragend.

1
EvgeTymo

Das hat bei mir funktioniert.

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
Jasmine John
**write this before adding view to dialog.**

dialog1.requestWindowFeature (Window.FEATURE_NO_TITLE);

0
dileep krishnan

Sie können dies einfach versuchen Android-Dialog Popup-Bibliothek . Es ist sehr einfach für Ihre Aktivität zu verwenden.

Wenn Sie auf die Schaltfläche "Senden" klicken, versuchen Sie, den folgenden Code einzugeben, nachdem Sie die obige lib in Ihren Code aufgenommen haben

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

Fügen Sie eine Linie in Ihrem gradle hinzu und Sie können loslegen

dependencies {
    compile 'com.vistrav:pop:2.0'
}
0
Dharmesh Gohil