Hộp thoại Android: Xóa thanh tiêu đề


108

Tôi có một hành vi kỳ lạ mà tôi không thể xác định nguồn gốc của nó.

Tôi có ứng dụng của mình với phiên bản cổ điển

requestWindowFeature(Window.FEATURE_NO_TITLE);

để xóa tiêu đề / thanh trạng thái.

Sau đó, tôi tạo một Hộp thoại để cho phép người dùng nhập thông tin (tên, v.v.)

Với bàn phím vật lý, không có vấn đề gì nhưng khi tôi sử dụng bàn phím ảo, tôi có một hành vi lạ:

mỗi lần tôi nhấn một phím trên bàn phím ảo, thanh tiêu đề / trạng thái xuất hiện lại đẩy tất cả bố cục bàn phím xung quanh rồi lại biến mất (giống như hoạt ảnh khi tôi khởi động ứng dụng)

đây là một số mã:

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

và sau đó

dialog.show();

Tôi đã thử

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

nhưng nó làm hỏng ứng dụng của tôi.

đây là 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>/>


Đăng logcat của bạn khi bạn sử dụng Dial.requestWindowFeature (Window.FEATURE_NO_TITLE); ngoài ra trong khi sử dụng dòng mã trên, không sử dụng hộp thoại.setTitle ("Đăng nhập:");
ingsaurabh

Cảm ơn vì gợi ý nhưng nó không phải là vấn đề. Điều gì sẽ xảy ra là khi tôi gõ một cái gì đó bằng bàn phím, thanh trạng thái tiếp tục xuất hiện và biến mất theo từng hành trình phím.
Jason Rogers

Câu trả lời:


434

sử dụng,

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

Cảm ơn vì gợi ý nhưng nó không phải là vấn đề. Điều gì sẽ xảy ra là khi tôi gõ một cái gì đó bằng bàn phím, thanh trạng thái tiếp tục xuất hiện và biến mất theo từng hành trình phím.
Jason Rogers

9
Trên một số thiết bị, điều này khiến bố cục hộp thoại mất chiều rộng, nhưng vẫn giữ nguyên chiều cao. Tôi thấy rằng việc thêm điều này trước đây .show () đã sửa nó mặc dù chúng đã được đặt trong bố cục xml. Dial.getWindow (). setLayout (WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
a54studio

1
Trong trường hợp kế thừa của DialogFragment, chúng ta cần đặt getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);bên trong onCreateView.
Anton Holovin

1
Nếu bạn đang sử dụng AppCompatDialog, sau đó sử dụng: dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
Firzen

24

tạo kiểu mới trong styles.xml

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

sau đó thêm cái này vào tệp kê khai của bạn:

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

14

Tất cả câu trả lời ở trên không phù hợp với tôi cho AppCompatDialog

Nếu bạn đang sử dụng AppCompatDialog, hãy thử cái này

Lưu ý quan trọng: Đặt điều này trước khi gọi setContentView.

hộp thoại.supportRequestWindowFeature (Window.FEATURE_NO_TITLE);


Cảm ơn bạn, đó là vấn đề của tôi, khiến tôi phát điên.
gregko

5

tạo XML của bạn được hiển thị trong hộp thoại ở đây là 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();

2

Bạn cũng có thể xác định Chủ đề trong tệp kê khai android để không hiển thị Thanh tiêu đề ..

Bạn chỉ cần xác định chủ đề android:theme="@android:style/Theme.Light.NoTitleBar" trong hoạt động mà bạn không muốn hiển thị thanh tiêu đề

Thí dụ:-

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


Tôi đã có một hoạt động mà không có thanh trạng thái, nhưng khi tôi gõ trên bàn phím virut, thanh trạng thái sẽ xuất hiện và biến mất (đẩy tất cả bố cục) giống như khi bạn bắt đầu hoạt động và thanh trạng thái không xuất hiện. chỉ có thời gian này của nó mỗi khi tôi chạm vào bàn phím
Jason Rogers

2

nếu bạn đang sử dụng chế độ xem tùy chỉnh thì hãy nhớ yêu cầu tính năng cửa sổ trước khi thêm chế độ xem nội dung như thế này

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

1

sử dụng mã bên dưới trước khi setcontentview: -

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

Lưu ý: - mã trên phải sử dụng ở trêndialog.setContentView(R.layout.custom_dialog);

Trong XML, hãy sử dụng một chủ đề

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

cũng styles.xml:

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

Và sau đó:

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

1

Tôi là một người mới làm quen với Android và đã gặp câu hỏi này khi cố gắng loại bỏ thanh tiêu đề.

Tôi đang sử dụng một hoạt động và hiển thị nó dưới dạng hộp thoại. Tôi đang xem xét các chủ đề và bắt gặp một chút hữu ích về chủ đề mặc định.

Đây là mã từ của tôi AndroidManifest.xmlmà tôi đã sử dụng khi thanh tiêu đề hiển thị:

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

    >

</activity>

Đây là sự thay đổi giúp tôi có được kết quả mong muốn:

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

    >

</activity>

Như tôi đã nói, tôi vẫn chưa quen với Android, vì vậy điều này có thể có những tác dụng phụ không mong muốn, nhưng nó dường như đã mang lại cho tôi kết quả tôi muốn, đó là xóa thanh tiêu đề khỏi hộp thoại.


1

Tôi đang sử dụng biến thể tiếp theo:

Hoạt động của Hộp thoại tùy chỉnh của tô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>

Rõ ràng:

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

Phong cách:

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

1

Với biến thể tiếp theo, tôi không có phản ứng nào:

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

Vì vậy, tôi cố gắng sử dụng tiếp theo:

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

Biến thể này hoạt động xuất sắc.


0

Điều này đã làm việc cho tôi.

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

Bạn có thể thử thư viện cửa sổ bật lên hộp thoại android đơn giản này . Nó rất đơn giản để sử dụng cho hoạt động của bạn.

Khi nút gửi được nhấp, hãy thử làm theo mã sau khi bao gồm lib trên vào mã của bạn

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

Thêm một dòng trong tô màu của bạn và bạn tốt để đi

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

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

Dial1.requestWindowFeature (Window.FEATURE_NO_TITLE);

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.