Ich erstelle ein DialogFragment, um einige Hilfemeldungen zu meiner App anzuzeigen. Abgesehen von einer Sache funktioniert alles einwandfrei: Oben im Fenster befindet sich ein schwarzer Streifen, der das DialogFragment anzeigt, von dem ich annehme, dass es für den Titel reserviert ist, etwas, das ich nicht verwenden möchte.
Dies ist besonders schmerzhaft, da mein benutzerdefiniertes DialogFragment einen weißen Hintergrund verwendet, sodass die Änderung viel zu berüchtigt ist, um sie außer Acht zu lassen.
Lassen Sie mich dies grafischer zeigen:
Der XML-Code für mein DialogFragment lautet nun wie folgt:
<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>
Und der Code der Klasse, die das DialogFragment implementiert:
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;
}
}
Und der Erstellungsprozess in der Hauptaktivität:
/**
* Shows the HelpDialog Fragment
*/
private void showHelpDialog() {
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
HelpDialog helpDialog = new HelpDialog();
helpDialog.show(fm, "fragment_help");
}
Ich weiß wirklich nicht, ob diese Antwort, die mit einem Dialog zusammenhängt, auch hier zu Android passt : Wie erstelle ich einen Dialog ohne Titel?
Wie kann ich diesen Titelbereich entfernen?
quelle
Antworten:
Fügen Sie einfach diese Codezeile in Ihre
HelpDialog.onCreateView(...)
Auf diese Weise möchten Sie ausdrücklich ein Fenster ohne Titel erhalten :)
BEARBEITEN
Wie
@DataGraham
und@Blundell
unten auf den Kommentaren darauf hingewiesen, ist es sicherer , den Antrag für einen Titel losen Fenster in der hinzuzufügenonCreateDialog()
Verfahren stattonCreateView()
. Auf diese Weise können Sie verhindern, dass NPE nervt, wenn Sie Ihr Fragment nicht alsDialog
:quelle
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE)
...getDialog
Sieandroid:layout_width
Attribut für die Stammansicht im Layout für Ihren Dialog aufwrap_content
?Das Dialogfragment verfügt über die setStyle-Methode, die vor der Erstellung der Ansicht in Java Doc aufgerufen werden sollte . Mit der gleichen Methode kann auch der Stil des Dialogs festgelegt werden
quelle
quelle
Versuchen Sie es einfach
quelle
quelle
Setzen Sie den Stil auf Theme_Holo_Dialog_NoActionBar:
quelle