Je crée un DialogFragment pour afficher des messages d'aide concernant mon application. Tout fonctionne bien à part une chose: il y a une bande noire en haut de la fenêtre qui montre le DialogFragment, que je présume est réservé pour le titre, quelque chose que je ne veux pas utiliser.
Ceci est particulièrement douloureux car mon DialogFragment personnalisé utilise un fond blanc, donc le changement est beaucoup trop notoire pour être laissé de côté.
Permettez-moi de vous montrer cela de manière plus graphique:
Maintenant, le code XML de mon DialogFragment est le suivant:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/holding"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/dialog_fragment_bg"
>
<!-- Usamos un LinearLayout para que la imagen y el texto esten bien alineados -->
<LinearLayout
android:id="@+id/confirmationToast"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView android:id="@+id/confirmationToastText"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="@string/help_dialog_fragment"
android:textColor="#AE0000"
android:gravity="center_vertical"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/confirmationButtonLL"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
>
<Button android:id="@+id/confirmationDialogButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginBottom="60dp"
android:background="@drawable/ok_button">
</Button>
</LinearLayout>
</LinearLayout>
</ScrollView>
Et le code de la classe qui implémente DialogFragment:
public class HelpDialog extends DialogFragment {
public HelpDialog() {
// Empty constructor required for DialogFragment
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Inflate the XML view for the help dialog fragment
View view = inflater.inflate(R.layout.help_dialog_fragment, container);
TextView text = (TextView)view.findViewById(R.id.confirmationToastText);
text.setText(Html.fromHtml(getString(R.string.help_dialog_fragment)));
//get the OK button and add a Listener
((Button) view.findViewById(R.id.confirmationDialogButton)).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// When button is clicked, call up to owning activity.
HelpDialog.this.dismiss();
}
});
return view;
}
}
Et le processus de création dans l'activité principale:
/**
* Shows the HelpDialog Fragment
*/
private void showHelpDialog() {
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
HelpDialog helpDialog = new HelpDialog();
helpDialog.show(fm, "fragment_help");
}
Je ne sais vraiment pas si cette réponse, liée à une boîte de dialogue, convient également à Android: comment créer une boîte de dialogue sans titre?
Comment puis-je me débarrasser de cette zone de titre?
la source
Réponses:
Ajoutez simplement cette ligne de code dans votre
HelpDialog.onCreateView(...)
De cette façon, vous demandez explicitement d'avoir une fenêtre sans titre :)
ÉDITER
Comme
@DataGraham
et@Blundell
souligné les commentaires ci - dessous, il est plus sûr d'ajouter la demande d'une fenêtre moins le titre dans laonCreateDialog()
méthode au lieu deonCreateView()
. De cette façon, vous pouvez empêcher NPE ennuyeux lorsque vous n'utilisez pas votre fragment commeDialog
:la source
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE)
...getDialog
vous retournerez un NPEandroid:layout_width
attribut de la vue racine dans la mise en page de votre boîte de dialogue défini surwrap_content
?Le fragment de boîte de dialogue possède la méthode setStyle, qui doit être appelée avant la création de la vue Java Doc . Le style de la boîte de dialogue peut également être défini avec la même méthode
la source
la source
Essayez de manière simple
la source
la source
Définissez le style sur Theme_Holo_Dialog_NoActionBar:
la source