Android İletişim Kutusu: Başlık çubuğunu kaldırma


108

Kaynağını tam olarak belirleyemediğim garip bir davranışım var.

Klasik ile uygulamam var

requestWindowFeature(Window.FEATURE_NO_TITLE);

başlık / durum çubuğunu kaldırmak için.

Daha sonra kullanıcının bilgi girmesine izin vermek için bir İletişim kutusu oluşturuyorum (isim vb.)

Fiziksel klavye ile sorun değil ama sanal klavyeyi kullandığımda garip bir davranışım oluyor:

Sanal klavyede bir tuşa her bastığımda, başlık / durum çubuğu tüm klavye düzenini iterek yeniden beliriyor ve sonra tekrar kayboluyor (tıpkı uygulamayı başlattığım zamanki animasyon gibi)

işte bazı kodlar:

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

ve sonra

dialog.show();

denedim

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

ancak uygulamam çöküyor.

işte 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>/>


Dialog.requestWindowFeature (Window.FEATURE_NO_TITLE) kullandığınızda logcat'inizi gönderin; ayrıca yukarıdaki kod satırını kullanırken dialog.setTitle ("Login:") kullanmayın;
ingsaurabh

Önerin için teşekkürler ama sorun değil. olan şey, klavyeyle bir şey yazdığımda, durum çubuğu her tuş vuruşunda görünmeye ve kaybolmaya devam ediyor.
Jason Rogers

Yanıtlar:


434

kullanımı

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

Önerin için teşekkürler ama sorun değil. olan şey, klavyeyle bir şey yazdığımda, durum çubuğu her tuş vuruşunda görünmeye ve kaybolmaya devam ediyor.
Jason Rogers

9
Bazı cihazlarda bu, iletişim düzeninin genişliğini kaybetmesine, ancak yüksekliğini korumasına neden olur. Bunu .show () 'dan önce eklemenin xml düzeninde zaten ayarlanmış olmasına rağmen düzeltildiğini buldum. dialog.getWindow (). setLayout (WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
a54studio

1
DialogFragment en mirasçı durumunda biz koymak gerekir getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);içini onCreateView.
Anton Holovin

1
dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
AppCompatDialog

24

styles.xml'de yeni stil yaratın

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

sonra bunu manifestinize ekleyin:

 <activity android:name=".youractivity" android:theme="@style/myDialog"></activity>

14

Yukarıdaki yanıtların tümü AppCompatDialog için benim için çalışmıyor

AppCompatDialog kullanıyorsanız bunu deneyin

Önemli not: setContentView öğesini çağırmadan önce bunu ayarlayın.

dialog.supportRequestWindowFeature (Window.FEATURE_NO_TITLE);


Teşekkür ederim, bu benim sorunumdu, beni deli ediyordu.
gregko

5

burada iletişim kutusunda gösterilen XML'inizi oluşturun, bu, activity_no_title_dialog'dur

final Dialog dialog1 = new Dialog(context);
dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog1.setContentView(R.layout.activity_no_title_dialog);
dialog1.show();

2

Tema'yı android bildirim dosyasında Başlık çubuğunun görüntülenmemesi için de tanımlayabilirsiniz.

Sadece android:theme="@android:style/Theme.Light.NoTitleBar"başlık çubuğunu görüntülemek istemediğiniz temayı aktivitede tanımlarsınız

Misal:-

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


Halihazırda durum çubuğu olmayan bir etkinliğim var, ancak sanal klavyede yazarken durum çubuğu beliriyor ve kayboluyor (tüm düzeni iterek), aynı etkinliği başlattığınızda ve durum çubuğu kaybolduğunda olduğu gibi. sadece bu sefer klavyeye her dokunduğumda
Jason Rogers

2

özel bir görünüm kullanıyorsanız, bunun gibi bir içerik görünümü eklemeden önce pencere özelliği talep etmeyi unutmayın

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.show();

1

setcontentview'dan önce aşağıdaki kodu kullanın: -

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

Not: - yukarıdaki kodun yukarıda kullanılması gerekirdialog.setContentView(R.layout.custom_dialog);

XML'de bir tema kullanın

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

ayrıca styles.xml:

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

Ve sonra:

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

1

Ben bir Android acemisiyim ve bir başlık çubuğundan kurtulmaya çalışırken bu soruyla karşılaştım.

Bir etkinlik kullanıyorum ve bunu bir iletişim kutusu olarak görüntülüyorum. Temalarla uğraşıyordum ve yararlı bir miktar varsayılan temayla karşılaştım.

AndroidManifest.xmlBaşlık çubuğu gösterilirken kullandığım kod şudur:

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

    >

</activity>

İşte bana istediğim sonucu getiren değişiklik:

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

    >

</activity>

Dediğim gibi, Android'de hala yeniyim, bu yüzden bu istenmeyen yan etkilere neden olabilir, ancak bana istediğim sonucu vermiş gibi görünüyor, bu sadece başlık çubuğunu iletişim kutusundan kaldırmak içindi.


1

Bir sonraki değişkeni kullanıyorum:

Özel İletişim Kutumun etkinliği:

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>

Belirgin:

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

Stil:

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

1

Bir sonraki varyantta reaksiyonum yok:

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

Bu yüzden şimdi kullanmaya çalışıyorum:

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

Bu değişken mükemmel çalışıyor.


0

Bu benim için çalıştı.

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>

0

Bu basit android iletişim kutusu açılır kitaplığını deneyebilirsiniz . Aktivitenizde kullanmak çok basit.

Gönder düğmesi tıklandığında, kodunuza yukarıdaki kitaplığı ekledikten sonra aşağıdaki kodu deneyin

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

Derecenize bir satır ekleyin ve gitmeniz iyi olur

dependencies {
    compile 'com.vistrav:pop:2.0'
}

0
**write this before adding view to dialog.**

dialog1.requestWindowFeature (Window.FEATURE_NO_TITLE);

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.