Dialog.setTitle 没有显示标题
Dialog.setTitle not showing a title
我正在尝试向我的对话框添加自定义标题,但是每当我 运行 我的应用程序都没有显示标题。
我创建对话框的代码是
final Dialog passwordDialog = new Dialog(this);
passwordDialog.setContentView(R.layout.admin_password_dialog);
passwordDialog.setTitle("Enter An Administrative Password");
passwordDialog.show();
我的布局文件是
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_confirmPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/edit_adminPassword"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="@string/confirmPassword"/>
<EditText
android:id="@+id/edit_adminPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:ems="10"
android:inputType="textPassword"/>
这就是我得到的
有什么我遗漏的吗?
您应该使用 AlertDialog.Builder
而不是仅仅创建 Dialog
:
// 1. Instantiate an AlertDialog.Builder with its constructor
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// 2. Chain together various setter methods to set the dialog characteristics
builder.setView(R.layout.admin_password_dialog);
builder.setTitle("Enter An Administrative Password");
// 3. Get the AlertDialog from create()
AlertDialog dialog = builder.create();
dialog.show();
有关 Android 对话框开发人员指南,请参阅 here。
和其他答案一样,但更简洁
final AlertDialog diag = new AlertDialog.Builder(this)
.setTitle("Enter An Administrative Password")
.setView(R.layout.admin_password_dialog)
.create();
diag.show();
Button diagButton = (Button) diag.findViewById(R.id.btn_confirmPassword);
diagButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// handle button click
EditText input = (EditText) diag.findViewById(R.id.edit_adminPassword);
String s = input.getText().toString();
}
});
您也可以试试这个方法,根据使用的主题获得不同的视图样式。
<style name="FilterDialogTheme" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowNoTitle">false</item>
</style>
在对话框构造函数中
public FilterDialog(Context context) {
super(context, R.style.FilterDialogTheme);
}
为您的项目使用 @style/Theme.Appcompat.Light.Dialog
。
你应该这样定义你的风格:
<style name="Dialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowNoTitle">false</item>
<item name="android:windowIsFloating">true</item>
</style>
然后将这个样式传递给Dialog的构造函数
final Dialog passwordDialog = new Dialog(this,R.style.Dialog);
我正在尝试向我的对话框添加自定义标题,但是每当我 运行 我的应用程序都没有显示标题。
我创建对话框的代码是
final Dialog passwordDialog = new Dialog(this);
passwordDialog.setContentView(R.layout.admin_password_dialog);
passwordDialog.setTitle("Enter An Administrative Password");
passwordDialog.show();
我的布局文件是
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn_confirmPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/edit_adminPassword"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:text="@string/confirmPassword"/>
<EditText
android:id="@+id/edit_adminPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:ems="10"
android:inputType="textPassword"/>
这就是我得到的
有什么我遗漏的吗?
您应该使用 AlertDialog.Builder
而不是仅仅创建 Dialog
:
// 1. Instantiate an AlertDialog.Builder with its constructor
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// 2. Chain together various setter methods to set the dialog characteristics
builder.setView(R.layout.admin_password_dialog);
builder.setTitle("Enter An Administrative Password");
// 3. Get the AlertDialog from create()
AlertDialog dialog = builder.create();
dialog.show();
有关 Android 对话框开发人员指南,请参阅 here。
和其他答案一样,但更简洁
final AlertDialog diag = new AlertDialog.Builder(this)
.setTitle("Enter An Administrative Password")
.setView(R.layout.admin_password_dialog)
.create();
diag.show();
Button diagButton = (Button) diag.findViewById(R.id.btn_confirmPassword);
diagButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// handle button click
EditText input = (EditText) diag.findViewById(R.id.edit_adminPassword);
String s = input.getText().toString();
}
});
您也可以试试这个方法,根据使用的主题获得不同的视图样式。
<style name="FilterDialogTheme" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowNoTitle">false</item>
</style>
在对话框构造函数中
public FilterDialog(Context context) {
super(context, R.style.FilterDialogTheme);
}
为您的项目使用 @style/Theme.Appcompat.Light.Dialog
。
你应该这样定义你的风格:
<style name="Dialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowNoTitle">false</item>
<item name="android:windowIsFloating">true</item>
</style>
然后将这个样式传递给Dialog的构造函数
final Dialog passwordDialog = new Dialog(this,R.style.Dialog);