我需要为我的 DialogFragment
放置一个自定义标题。
getDialog().setTitle("My Title");
这对我来说还不够,因为我想更改标题文本和背景颜色。
正如您从下图中看到的那样,使用 getDialog().setTitle("My Title");
我没有自定义(据我所知),即文本颜色是黑色的,背景是白色的。
我的目标是将 My Title
自定义为 Custom Title
。我一直在查看 API,但找不到任何将 View 加载到标题部分的方法。
任何人都知道如何自定义或设置/注入(inject) View 到 FragmentDialog
中?
最佳答案
您必须像这样通过覆盖 onCreateDialog 来创建自定义对话框:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
dialogView = inflater.inflate(R.layout.dialog_change_password, null);
/* Anything that needs to be done to the view, ie.
on click listeners, postivie/negative buttons,
values being changed etc */
builder.setView(dialogView);
return builder.create();
}
和 dialog_change_password.xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@color/white_grey">
<TextView
android:text="@string/change_password"
android:id="@+id/title"
style="@style/dialogHeading" />
<LinearLayout
android:layout_marginTop="10dp"
style="@style/dialogSection">
<LinearLayout
style="@style/PasswordChangeRow">
<TextView
style="@style/PasswordChangeLabel"
android:text="@string/new_password"/>
<EditText
style="@style/PasswordChangeField"
android:id="@+id/password"
android:inputType="textPassword"/>
</LinearLayout>
<LinearLayout
style="@style/PasswordChangeRow">
<TextView
style="@style/PasswordChangeLabel"
android:text="@string/confirm_password"/>
<EditText
style="@style/PasswordChangeField"
android:id="@+id/confirmPassword"
android:inputType="textPassword"/>
</LinearLayout>
</LinearLayout>
<TextView
android:text="@string/password_conditions_message"
style="@style/dialogMessage" />
</LinearLayout>
显然 xml 比所需的要复杂一些,但这只是可以完成的示例,它看起来像这样
关于android - 带有自定义标题的 DialogFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28977576/