繁体   English   中英

Theme.AppCompat.Dialog标题填充问题。

[英]Theme.AppCompat.Dialog title padding issues.

当使用Base.Theme.AppCompat.Dialog作为我的DialogFragment的主题时,我无法将填充应用于整个标题视图。 我可以成功地将paddingBottom应用于标题文本,但忽略该图标。 图标通过getDialog().setFeatureDrawable(Window.FEATURE_LEFT_ICON, drawable);应用getDialog().setFeatureDrawable(Window.FEATURE_LEFT_ICON, drawable);

DialogFragment风格

<style name="my_dialog" parent="@style/Theme.AppCompat.Light.Dialog">
    <item name="android:windowBackground">@color/NavBarTint</item>
    <item name="android:windowTitleStyle">@style/DialogWindowTitle</item>
    <item name="android:windowNoTitle">false</item>

    <!-- Doesn't apply to icon -->
    <item name="drawablePadding">8dp</item>

    <item name="colorAccent">@color/NavBarTint</item>
</style>

<style name="DialogWindowTitle">
    <!-- Applies to only the text -->
    <item name="android:paddingBottom">8dp</item>

    <item name="android:textColor">@color/DialogTitleText</item>
    <item name="android:textSize">22sp</item>
    <item name="android:textColorPrimary">@color/DialogTitleText</item>
</style>

结果是

在此输入图像描述

我知道另一种方法是废弃标题并制作自己的标题,但是我们有很多对话都是从这种风格继承而来的,并且很想知道问题的根源而不是一个解决问题的工具。

谢谢

对不起,我不是英文对话框.PreferredPadding attr dialogPreferredPadding Appcompat.Light.Dilaog默认设置@ dimen / abc_dialog_padding_material 24dp

<style name="my_dialog" parent="@style/Theme.AppCompat.Light.Dialog">
    <item name="android:windowBackground">@color/NavBarTint</item>
    <item name="android:windowTitleStyle">@style/DialogWindowTitle</item>
    <item name="android:windowNoTitle">false</item>

    <!-- Doesn't apply to icon -->
    <item name="drawablePadding">8dp</item>
     <item name="dialogPreferredPadding">0dp</item>
    <item name="colorAccent">@color/NavBarTint</item>
</style>      

不得不应用一个黑客为棒棒糖后设备(最终删除图标),但我会发布我们使用的。

/**
 * This method can be called to add padding
 * below an icon if used. New appcompat library introduced
 * bug where padding below icon is ignored.
 */
public void applyAppCompatDialogIconPaddingFix() {
    if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) && (getView() instanceof ViewGroup)) {
        ViewGroup rootView = (ViewGroup) getView();
        if (rootView instanceof ScrollView) {
            //going to safely assume a child exists...
            rootView = (ViewGroup) rootView.getChildAt(0);
            if (rootView == null) {
                return;
            }
        }

        float padding = ContextUtil.pxFromDp(getContext(), 12f);

        View paddingFix = new View(getActivity());
        paddingFix.setBackgroundResource(R.color.NavBarTint); //same color as title

        if (rootView instanceof LinearLayout) {
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT, (int) padding);
            paddingFix.setLayoutParams(params);
        } else if (rootView instanceof RelativeLayout) {
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                    RelativeLayout.LayoutParams.MATCH_PARENT, (int) padding);
            paddingFix.setLayoutParams(params);
        } else {
            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT, (int) padding);
            paddingFix.setLayoutParams(params);
        }

        rootView.addView(paddingFix, 0);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM