如何防止Android的DialogFragment标题弄乱我的布局?

时间:2016-07-04 12:00:52

标签: android android-dialogfragment

我正在使用android.support.v4.app.DialogFragment向自己询问一些凭据。 片段实例化如下:

DialogFragment cf = CredentialDialogFrag.newInstance();
cf.setStyle(DialogFragment.STYLE_NORMAL, R.style.AppTheme_TitleDialog);
cf.show(getChildFragmentManager(), "credentialDialog");

每当我设置标题时,布局都会搞砸:

如果我没有在我的对话框中使用标题,那么看起来很好:

如何阻止标题扩展对话框的宽度?为什么会发生这种情况? 在阅读预定义的XML文件时,我找不到相应的样式元素。 我也尝试创建自己的windowTitleStyle,这对我来说没有用。我能够更改文本颜色,字体但无法设置标题的宽度。

布局xml(没什么太花哨的):

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fragCredential"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:context=".fragments.CredentialDialogFrag">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp">

        <android.support.design.widget.TextInputLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/til_login"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true">

            <android.support.design.widget.TextInputEditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textPersonName"
                android:ems="10"
                android:id="@+id/input_cred_login"
                android:hint="@string/hint_cred_login" />

        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/til_pass"
            android:layout_below="@+id/til_login"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true">

            <android.support.design.widget.TextInputEditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:ems="10"
                android:id="@+id/input_cred_pass"
                android:hint="@string/hint_cred_pass" />
        </android.support.design.widget.TextInputLayout>

        <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@android:string/cancel"
            android:id="@+id/button_cred_cancel"
            android:layout_below="@+id/til_pass"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <Button
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@android:string/ok"
            android:id="@+id/button_cred_ok"
            android:layout_alignTop="@+id/button_cred_cancel"
            android:layout_alignRight="@+id/til_pass"
            android:layout_alignEnd="@+id/til_pass" />

    </RelativeLayout>

</android.support.design.widget.CoordinatorLayout>

对话样式:

<style name="AppTheme.TitleDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:windowNoTitle">false</item>
</style>

0 个答案:

没有答案