我有一种奇怪的行为,我无法确定其来源。
我的应用程序带有经典
requestWindowFeature(Window.FEATURE_NO_TITLE);
删除标题/状态栏。
然后我创建一个对话框以允许用户输入信息(名称等)
使用物理键盘没问题,但是当我使用虚拟键盘时,我有一个奇怪的行为:
每当我按下虚拟键盘上的一个键时,标题/状态栏会再次出现,推动所有键盘布局再次消失(就像我启动应用程序时的动画一样)
这里有一些代码:
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>/>
答案 0 :(得分:423)
使用,
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before
dialog.setContentView(R.layout.logindialog);
答案 1 :(得分:24)
在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>
答案 2 :(得分:12)
以上所有答案对AppCompatDialog
都不起作用如果您使用的是 AppCompatDialog ,请尝试使用
重要说明: 在调用setContentView之前设置此项。
dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
答案 3 :(得分:4)
创建在对话框中显示的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();
答案 4 :(得分:2)
您还可以在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>
答案 5 :(得分:2)
如果您使用的是自定义视图,请在添加内容视图之前记住请求窗口功能
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.show();
答案 6 :(得分:1)
在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);
答案 7 :(得分:1)
我是一名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的新手,所以这可能有不良的副作用,但它似乎给了我想要的结果,这只是从对话框中删除标题栏。
答案 8 :(得分:1)
我正在使用下一个变体:
我的自定义对话框的活动:
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>
答案 9 :(得分:1)
对于下一个变体,我没有反应:
brew reinstall erlang
因此,我尝试使用下一个:
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before
dialog.setContentView(R.layout.logindialog);
这种变体效果很好。
答案 10 :(得分:0)
这对我有用。
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>
答案 11 :(得分:0)
你可以尝试这个简单的android dialog popup library。在您的活动中使用非常简单。
单击提交按钮后,在代码
中包含上面的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'
}
答案 12 :(得分:0)
**write this before adding view to dialog.**
dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);