android - 带有自定义标题的 DialogFragment

标签 android android-layout android-fragments android-dialogfragment

我需要为我的 DialogFragment 放置一个自定义标题。

getDialog().setTitle("My Title");

这对我来说还不够,因为我想更改标题文本和背景颜色。

正如您从下图中看到的那样,使用 getDialog().setTitle("My Title"); 我没有自定义(据我所知),即文本颜色是黑色的,背景是白色的。

我的目标是将 My Title 自定义为 Custom Title。我一直在查看 API,但找不到任何将 View 加载到标题部分的方法。

任何人都知道如何自定义或设置/注入(inject) View 到 FragmentDialog 中?

enter image description here

最佳答案

您必须像这样通过覆盖 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 比所需的要复杂一些,但这只是可以完成的示例,它看起来像这样

enter image description here

关于android - 带有自定义标题的 DialogFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28977576/

相关文章:

android - 图像在滚动 ListView 上刷新

android - 如何将对象从 fragment 传递/共享到 fragment ?

Android退出白日梦模式

Android "swipe left to right to delete",列表项上的手势,ICS 样式

java - Android 中如何删除 View 与其轮廓边框之间的多余空格?

android - 切换 android map fragment -- 崩溃

android - 用Activity启动Fragment是不是更好?

java - 每当我重新运行应用程序时都无法登录到应用程序

java - 无法在外部存储 Android 上创建文件

java - 我如何/在哪里可以 "stash"/在我的应用程序中保存数据?