由于您使用的是该.setTitle()
方法,因此它仅使用默认设置设置标题,例如白色背景。如果要自定义标题背景颜色,则需要有一个 xml 来执行此操作。此外,对于 DialogFragments,根据我的知识和经验,您应该使用public Dialog onCreateDialog
而不是public View onCreateView
. 这样你就返回一个对话框,而不是一个视图,然后你可以调用.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
s 是对话框的“主体”。我在 xml 中没有按钮,因为我onCreateDialog
在上面的其他代码片段中以编程方式设置了这些按钮。