web-dev-qa-db-fra.com

Android Dialogue: Supprimer la barre de titre

J'ai un comportement étrange dont je ne peux pas identifier la source.

J'ai mon application avec le classique

requestWindowFeature(Window.FEATURE_NO_TITLE);

pour supprimer le titre/la barre d'état.

Je crée ensuite une boîte de dialogue pour permettre à l'utilisateur de saisir des informations (nom, etc.)

Avec un clavier physique, pas de problème, mais lorsque j'utilise le clavier virtuel, j'ai un comportement étrange:

chaque fois que j'appuie sur une touche du clavier virtuel, la barre de titre/d'état réapparaît, ce qui permet de repousser toute la disposition du clavier, puis de nouveau (tout comme l'animation du démarrage de l'application)

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

puis

dialog.show();

J'ai essayé

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

mais cela plante mon application.

voici le 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

utilisation,

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

créer un nouveau style dans styles.xml

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

puis ajoutez ceci à votre manifeste:

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

Toutes les réponses ci-dessus ne fonctionnent pas pour moi pour AppCompatDialog

Si vous utilisez AppCompatDialog essayez ceci

Remarque importante: Définissez cette option avant d'appeler setContentView.

dialog.supportRequestWindowFeature (Window.FEATURE_NO_TITLE);

14
Ranjith Kumar

créez votre code XML qui est affiché dans la boîte de dialogue ici c'est activity_no_title_dialog

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

si vous utilisez une vue personnalisée, n'oubliez pas de demander la fonctionnalité de fenêtre avant d'ajouter le contenu comme ceci

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

Vous pouvez également définir le thème dans Android le fichier manifeste pour ne pas afficher la barre de titre ..

Vous venez de définir le thème Android:theme="@Android:style/Theme.Light.NoTitleBar" en activité où vous ne voulez pas afficher la barre de titre

Exemple: -

    <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

utilisez le code ci-dessous avant setcontentview: -

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

Remarque: - le code ci-dessus doit être utilisé ci-dessus dialog.setContentView(R.layout.custom_dialog);

En XML utiliser un thème

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

également styles.xml:

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

Puis:

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

Je suis un novice Android) et je suis tombé sur cette question en essayant de supprimer une barre de titre.

J'utilise une activité et l'affiche sous forme de dialogue. Je cherchais avec des thèmes et suis tombé sur un thème utile de thèmes par défaut.

Voici le code de mon AndroidManifest.xml que j’utilisais lorsque la barre de titre était affichée:

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

    >

</activity>

Voici le changement qui m'a permis d'obtenir le résultat souhaité:

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

    >

</activity>

Comme je le disais, je suis encore nouveau sur Android. Cela peut donc avoir des effets secondaires indésirables, mais il semble que cela m’ait donné le résultat souhaité, à savoir simplement supprimer la barre de titre de la boîte de dialogue.

1
mbm29414

J'utilise la variante suivante:

Activité de mon dialogue personnalisé:

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>

manifeste:

<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

Avec la variante suivante, je n'ai aucune réaction:

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

Donc, j'essaie d'utiliser next:

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

Cette variante fonctionne très bien.

1
EvgeTymo

Cela a fonctionné pour moi.

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

Vous pouvez essayer cette simple bibliothèque popup de dialogue Android . C'est très simple à utiliser pour votre activité.

Lorsque le bouton de soumission est cliqué, essayez de suivre le code après avoir inclus lib ci-dessus dans votre code

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

Ajoutez une ligne dans votre note et vous êtes prêt à partir

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