【问题标题】:Match text style and padding of custom preference匹配自定义首选项的文本样式和填充
【发布时间】:2015-11-12 14:11:03
【问题描述】:

在我的应用程序的首选项片段中,我有一个自定义首选项(它是滑块视图首选项)。功能运行良好,但我无法让偏好的视觉外观与偏好的其余部分相匹配。

所有搜索都指向使用style="?android:textAppearanceLarge",但这会导致标题字体比其他首选项大得多,而且颜色也不匹配。

此外,整个首选项视图上的填充似乎不正确。 我尝试使用style="?android:preferenceStyle,但这完全没有任何作用。该应用程序使用AppCompat.Light.DarkActionBar 主题。这是它的样子。显然,这不好——我需要匹配其他偏好的样式。

那么,问题是如何匹配首选项布局的样式以在标题上具有正确的填充和正确的字体?

更新:在进一步研究之后,我使用style="?attr:textAppearanceMedium" 获得了匹配的标题样式。我仍在寻找匹配填充的方法。

【问题讨论】:

    标签: android preference


    【解决方案1】:

    我知道这篇文章有点老了。也许您已经找到了解决方案。但是对于所有遇到同样问题的其他人(比如我),让我向您展示对我有用的解决方案:

    我的偏好类有几个构造函数。其中之一是“2 参数构造函数”,它是在扩展 XML 布局时使用的。 一般是这样的

    public MyPrefClass (Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }
    
    public MyPrefClass(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        setWidgetLayoutResource(...)
    }
    

    这意味着,将调用 3 参数构造函数,将“0”作为 StyleAttributes。这会导致没有显式样式的构造函数调用 - 即使在 XML 中定义。

    所以我所要做的就是将第三个参数更改为所需的样式将第二个参数的构造函数更改为:

    public MyPrefClass (Context context, AttributeSet attrs) {
        this(context, attrs, android.R.attr.dialogPreferenceStyle);
    }
    

    这解决了问题。首选项与其他首选项具有相同的样式。

    --- 编辑 ----

    确保通过 setWidgetLayoutResource 而不是 setLayoutResource 设置布局,因为前者使用小部件布局,而后者使用单独的布局。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多