Android Dialog: Menghapus bilah judul

108

Saya memiliki perilaku aneh yang tidak dapat saya tunjukkan sumbernya.

Saya memiliki aplikasi saya dengan klasik

requestWindowFeature(Window.FEATURE_NO_TITLE);

untuk menghapus bilah judul / status.

Saya kemudian membuat kotak Dialog untuk memungkinkan pengguna memasukkan informasi (nama dll)

Dengan keyboard fisik, tidak masalah tetapi ketika saya menggunakan keyboard virtual saya memiliki perilaku yang aneh:

setiap kali saya menekan tombol pada papan tombol virtual, bilah judul / status muncul kembali mendorong semua tata letak keyboard kemudian menghilang lagi (seperti animasi ketika saya memulai aplikasi)

berikut beberapa kode:

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

lalu

dialog.show();

Saya mencoba

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

tapi itu merusak aplikasi saya.

ini 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>/>

Jason Rogers
sumber
Posting logcat Anda saat Anda menggunakan dialog.requestWindowFeature (Window.FEATURE_NO_TITLE); juga saat menggunakan baris kode di atas jangan gunakan dialog.setTitle ("Login:");
ingsaurabh
Terima kasih atas sarannya tetapi bukan itu masalahnya. yang terjadi adalah ketika saya mengetik sesuatu dengan keyboard, bilah status terus muncul dan menghilang dengan setiap penekanan tombol.
Jason Rogers

Jawaban:

434

menggunakan,

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before     
dialog.setContentView(R.layout.logindialog);
duduk
sumber
Terima kasih atas sarannya tetapi bukan itu masalahnya. yang terjadi adalah ketika saya mengetik sesuatu dengan keyboard, bilah status terus muncul dan menghilang dengan setiap penekanan tombol.
Jason Rogers
9
Pada beberapa perangkat, hal ini menyebabkan layout dialog kehilangan lebarnya, tetapi tetap tinggi. Saya menemukan bahwa menambahkan ini sebelum .show () memperbaikinya meskipun mereka sudah disetel dalam tata letak xml. dialog.getWindow (). setLayout (WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
a54studio
1
Dalam kasus pewaris DialogFragment, kita perlu memasukkannya ke getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);dalam onCreateView.
Anton Holovin
1
Jika Anda menggunakan AppCompatDialog, gunakan: dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
Firzen
24

buat gaya baru di styles.xml

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

lalu tambahkan ini ke manifes Anda:

 <activity android:name=".youractivity" android:theme="@style/myDialog"></activity>
Pratik Bhat
sumber
14

Semua jawaban di atas tidak berfungsi untuk saya untuk AppCompatDialog

Jika Anda menggunakan AppCompatDialog, coba ini

Catatan penting: Setel ini sebelum memanggil setContentView.

dialog.supportRequestWindowFeature (Window.FEATURE_NO_TITLE);

Ranjith Kumar
sumber
Terima kasih, itu masalah saya, membuat saya gila.
gregko
5

buat XML Anda yang ditampilkan dalam dialog di sini adalah 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();
Sagar Vaghela
sumber
2

Anda juga dapat menentukan Tema dalam file manifes android agar tidak menampilkan bilah Judul ..

Anda tinggal menentukan tema android:theme="@android:style/Theme.Light.NoTitleBar"dalam aktivitas di mana Anda tidak ingin menampilkan bilah judul

Contoh:-

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

Mohit Kanada
sumber
Saya sudah memiliki aktivitas tanpa bilah status, tetapi ketika saya mengetik di keyboard virutal, bilah status muncul dan menghilang (mendorong semua tata letak) seperti saat Anda memulai aktivitas dan bilah status menghilang. hanya kali ini setiap kali saya menyentuh keyboard
Jason Rogers
2

Jika Anda menggunakan tampilan kustom, ingatlah untuk meminta fitur jendela sebelum menambahkan tampilan konten seperti ini

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

gunakan kode di bawah ini sebelum setcontentview: -

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

Catatan: - kode diatas harus digunakan diatasdialog.setContentView(R.layout.custom_dialog);

Dalam XML gunakan tema

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

juga styles.xml:

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

Lalu:

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

Saya seorang pemula Android dan menemukan pertanyaan ini mencoba menyingkirkan bilah judul.

Saya menggunakan suatu aktivitas dan menampilkannya sebagai dialog. Saya melihat-lihat tema dan menemukan sedikit tema default yang berguna.

Inilah kode dari saya AndroidManifest.xmlyang saya gunakan saat bilah judul ditampilkan:

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

    >

</activity>

Inilah perubahan yang membuat saya mendapatkan hasil yang saya inginkan:

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

    >

</activity>

Seperti yang saya katakan, saya masih baru mengenal Android, jadi ini mungkin memiliki efek samping yang tidak diinginkan, tetapi tampaknya telah memberi saya hasil yang saya inginkan, yaitu hanya untuk menghapus bilah judul dari dialog.

mbm29414
sumber
1

Saya menggunakan varian berikutnya:

Aktivitas Dialog kustom saya:

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>

Nyata:

<activity android:name=".AlertDialogue"
            android:theme="@style/AlertDialogNoTitle">
</activity>

Gaya:

<style name="AlertDialogNoTitle" parent="Theme.AppCompat.Light.Dialog">
        <item name="android:windowNoTitle">true</item>
</style>
V. Maret
sumber
1

Dengan varian berikutnya saya tidak bereaksi:

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

Jadi, saya coba gunakan selanjutnya:

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

Varian ini bekerja dengan sangat baik.

EvgeTymo
sumber
0

Ini berhasil untuk saya.

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>
Jasmine John
sumber
0

Anda dapat mencoba perpustakaan popup dialog android sederhana ini . Ini sangat mudah digunakan pada aktivitas Anda.

Ketika tombol submit diklik coba kode berikut setelah memasukkan lib di atas dalam kode Anda

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

Tambahkan satu baris di gradle Anda dan Anda siap melakukannya

dependencies {
    compile 'com.vistrav:pop:2.0'
}
Dharmesh Gohil
sumber
0
**write this before adding view to dialog.**

dialog1.requestWindowFeature (Window.FEATURE_NO_TITLE);

dileep krishnan
sumber