Android对话框:删除标题栏
我有一个奇怪的行为,我不能确定的来源。
我有我的经典应用程序
requestWindowFeature(Window.FEATURE_NO_TITLE);
删除标题/状态栏。
然后我创build一个对话框让用户input信息(名称等)
用一个物理键盘,没问题,但是当我使用虚拟键盘时,我有一个奇怪的行为:
每当我按下虚拟键盘上的按键时,标题/状态栏会重新出现,推动所有的键盘布局,然后再次消失(就像我启动应用程序时的animation一样)
这里是一些代码:
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>/>
使用,
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before dialog.setContentView(R.layout.logindialog);
在styles.xml中创build新的样式
<style name="myDialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> </style>
然后将其添加到您的清单:
<activity android:name=".youractivity" android:theme="@style/myDialog"></activity>
创build你的对话框中显示的XML,它是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();
以上所有答案都不适用于我的AppCompatDialog
如果你正在使用AppCompatDialog,试试这个
重要提示:在调用setContentView之前设置它。
dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
你也可以在Android清单文件中定义主题,以便不显示标题栏。
您只需在不想显示标题栏的活动中定义主题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>
在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"
也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);
我是一个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新手,所以这可能有不良的副作用,但它似乎给了我想要的结果,这只是从对话框中删除标题栏。
如果您正在使用自定义视图,那么在添加内容视图之前请记住请求窗口function
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(view); dialog.show();
这对我有效。
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>
你可以试试这个简单的android对话框popup库 。 在您的活动中使用非常简单。
点击提交button后,在你的代码中包含上面的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();
在你的gradle中添加一行,你很好走
dependencies { compile 'com.vistrav:pop:2.0' }