Saya membuat DialogFragment untuk menampilkan beberapa pesan bantuan terkait aplikasi saya. Semuanya berfungsi dengan baik selain satu hal: Ada garis hitam di bagian atas jendela yang menunjukkan DialogFragment, yang saya anggap disediakan untuk judul, sesuatu yang tidak ingin saya gunakan.
Ini sangat menyakitkan karena DialogFragment kebiasaan saya menggunakan latar belakang putih, jadi perubahannya terlalu terkenal untuk dikesampingkan.
Mari saya tunjukkan ini dengan cara yang lebih grafis:
Sekarang kode XML untuk DialogFragment saya adalah sebagai berikut:
<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>
Dan kode kelas yang mengimplementasikan 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;
}
}
Dan proses pembuatan dalam Kegiatan utama:
/**
* Shows the HelpDialog Fragment
*/
private void showHelpDialog() {
android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
HelpDialog helpDialog = new HelpDialog();
helpDialog.show(fm, "fragment_help");
}
Saya benar-benar tidak tahu apakah jawaban ini, terkait dengan Dialog, cocok untuk Android juga : Bagaimana cara membuat Dialog tanpa judul?
Bagaimana saya bisa menyingkirkan area judul ini?
sumber
Jawaban:
Cukup tambahkan baris kode ini di
HelpDialog.onCreateView(...)
Dengan cara ini Anda secara eksplisit meminta untuk mendapatkan jendela tanpa judul :)
EDIT
Seperti
@DataGraham
dan@Blundell
ditunjukkan pada komentar di bawah, lebih aman untuk menambahkan permintaan untuk jendela tanpa judul dalamonCreateDialog()
metodeonCreateView()
. Dengan cara ini Anda dapat mencegah ennoying NPE saat Anda tidak menggunakan fragmen Anda sebagaiDialog
:sumber
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE)
juga ...getDialog
akan dikembalikan NPEandroid:layout_width
atribut untuk tampilan root di tata letak untuk dialog Anda diatur kewrap_content
?Fragmen dialog memiliki metode setStyle, yang harus dipanggil sebelum melihat pembuatan Java Doc . Gaya dialog juga dapat diatur dengan metode yang sama
sumber
sumber
Coba dengan cara mudah
sumber
sumber
Setel gaya ke Theme_Holo_Dialog_NoActionBar:
sumber