由于您正在使用 .setTitle()
方法,它只设置了标题的默认设置,例如白色背景。如果您想自定义标题背景颜色,则需要使用xml来实现。此外,根据我的知识和经验,对于DialogFragments,您应该使用 public Dialog onCreateDialog
而不是 public View onCreateView
。这样您就可以返回一个 Dialog,而不仅仅是一个 View,然后您可以调用 .show()
来显示您的对话框。以下是一个示例:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
Bundle args = getArguments();
currentName = args.getString(ARG_CURRENT_NAME);
builder.setView(inflater.inflate(R.layout.name_dialog, null));
builder.setTitle("Rename Rapper Program");
builder.setMessage("Enter a new name for " + currentName + ":");
builder.setPositiveButton("Rename", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
newName = (EditText) getDialog().findViewById(R.id.new_name);
newProgName = newName.getText().toString();
mRename.renameProgram(currentName, newProgName);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
});
return builder.create();
}
以下是一个示例对话框的XML代码,虽然它不是上述DialogFragment中被填充的XML代码。
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:drawableLeft="@drawable/login"
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="#FCD116"
android:text="@string/login"
android:textSize="36sp"/>
<EditText android:id="@+id/username"
android:inputType="textEmailAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp"
android:hint="@string/un"/>
<EditText android:id="@+id/password"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="16dp"
android:fontFamily="sans-serif"
android:hint="@string/pw"/>
</LinearLayout>
LinearLayout
用于设置其余子项的相应位置。第一个TextView
充当“标题”栏,然后EditText
是对话框的“正文”。 XML中没有按钮,因为我在onCreateDialog
中像上面的代码片段一样在程序中设置了这些按钮。