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>/>
utilisation,
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before
dialog.setContentView(R.layout.logindialog);
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>
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);
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();
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();
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>
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);
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.
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>
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.
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>
**write this before adding view to dialog.**
dialog1.requestWindowFeature (Window.FEATURE_NO_TITLE);
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'
}