Android 对话框: 移除标题栏

我有一个奇怪的行为,我不能确定的来源。

我有个经典的应用程序

requestWindowFeature(Window.FEATURE_NO_TITLE);

删除标题/状态栏。

然后创建一个对话框,允许用户输入信息(名称等)

使用物理键盘,没有问题,但是当我使用虚拟键盘时,我有一种奇怪的行为:

每次我按下虚拟键盘上的一个键时,标题/状态栏就会重新出现,推动所有键盘布局,然后再次消失(就像启动应用程序时的动画一样)

here is some code :

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

然后

dialog.show();

我尽力了

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

但我的应用程序崩溃了。

这里是 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>/>

132786 次浏览

使用,

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

You can also define Theme in android manifest file for not display Title bar..

您只需在不想显示标题栏的活动中定义主题 android:theme="@android:style/Theme.Light.NoTitleBar"

例子:-

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

在 styles.xml 中创建新样式

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

然后把这个加到你的清单上:

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

在 setcontentview 之前使用以下代码:-

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

注意:- 以上代码必须在 dialog.setContentView(R.layout.custom_dialog);以上使用

在 XML 中使用主题

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

also styles.xml:

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

然后:

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

创建对话框中显示的 XML 这里是 activity _ no _ title _ Dialogue

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

我是一个 Android 新手,遇到这个问题,试图摆脱一个标题栏。

我正在使用一个活动,并将其显示为一个对话框。我在主题中四处寻找,发现了一些有用的默认主题。

下面是我在标题栏显示时使用的 AndroidManifest.xml代码:

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


>


</activity>

下面就是让我得到我想要的结果的改变:

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


>


</activity>

正如我所说,我对 Android 还是个新手,所以这可能会有一些不好的副作用,但是它似乎给了我我想要的结果,那就是从对话框中移除标题栏。

这招对我很管用。

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>

你可以试试这个简单的 机器人对话框弹出库。它在你的活动中使用非常简单。

当单击提交按钮时,请在代码中包含上述 lib 之后尝试下面的代码

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

在你的梯级上加一行,你就可以走了

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

if you are using a custom view then remeber to request window feature before adding content view like this

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

All the above answer not working for me for AppCompatDialog

如果你正在使用 AppCompatDialog试试这个

重要提示: 在调用 setContentView 之前设置此选项。

SupportRequestWindowFeature (Window.FEATURE _ NO _ TITLE) ;

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

请求 WindowFeature (Window.FEATURE _ NO _ TITLE) ;

我用的是下一个版本:

自定义对话框的活动:

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>

舱单:

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

风格:

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

对于下一个变体,我没有任何反应:

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

因此,我尝试使用下面这个例子:

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

这种变体工作得非常好。