gpt4 book ai didi

android - 匹配自定义首选项的文本样式和填充

转载 作者:行者123 更新时间:2023-11-29 15:09:11 25 4
gpt4 key购买 nike

在我的应用的首选项 fragment 中,我有一个自定义首选项(它是一个 slider View 首选项)。功能运行良好,但我无法使首选项的视觉外观与其余首选项的视觉外观相匹配。

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

此外,整个偏好 View 的填充似乎不正确。我尝试使用 style="?android:preferenceStyle,但这绝对没有任何效果。应用程序使用 AppCompat.Light.DarkActionBar 主题。这是它的样子。显然,这个不好 - 我需要匹配其他偏好的样式。

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

enter image description here

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

最佳答案

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

我的偏好类有几个构造函数。其中之一是“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 中定义也是如此。

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

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

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

--- 编辑 ----

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

关于android - 匹配自定义首选项的文本样式和填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33673418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com