gpt4 book ai didi

android - 如何为旧版 Android API 实现 TextView 行距方法?

转载 作者:行者123 更新时间:2023-11-29 00:07:50 24 4
gpt4 key购买 nike

之前,我在 stackoverflow 上问了一个标题为“How to paginate text in Android”的问题,得到了一个很好的答案,对我帮助很大。现在我需要在较旧的 Android API 上移植代码,以防万一,Android API 版本 8,这样我就可以在几乎所有 Android 设备上运行我的应用程序,从 Android 2.2 开始。

我遇到的问题是答案中使用的一些方法仅在 Android API 16+ 中可用。

        mPagination = new Pagination(mText,
mTextView.getWidth(),
mTextView.getHeight(),
mTextView.getPaint(),
mTextView.getLineSpacingMultiplier(),
mTextView.getLineSpacingExtra(),
mTextView.getIncludeFontPadding());

所以,我至少要实现这些方法:

                TextView.getLineSpacingMultiplier()
TextView.getLineSpacingExtra()
TextView.getIncludeFontPadding()

第二个好像已经描述过了here作为:

mTextView.getPaint().getFontSpacing()
* mTextView.getLineSpacingMultiplier() + mTextView.getLineSpacingExtra()

但我不知道其他两个是否与 2.2 相关,如果是,如何在 Android API 版本 8 中实现它们。有一些提示 here ,使用我无法完全理解的Android TextView 的源代码。

最佳答案

如果我们查看 TextView 的 源,我们可以看到以下内容。

Android 5.0 :

private float mSpacingMult = 1.0f;
private float mSpacingAdd = 0.0f;
...
private boolean mIncludePad = true;

Android 2.0 :

private float mSpacingMult = 1;
private float mSpacingAdd = 0;
...
private boolean mIncludePad = true;

所以默认值是相等的。

话虽如此,您可以使用 Pagination 的 构造函数和适用于 API 8+ 的默认值:

new Pagination(mText,
mTextView.getWidth(),
mTextView.getHeight(),
mTextView.getPaint(),
1.0f, 0.0f, true);

如果您让用户更改/设置(通过设置菜单)这些参数,同样无需使用 getter。您只需使用 TextView 的 setters 之一设置参数的新值,并将相同的值传递给 Pagination 的构造函数。例如,

new Pagination(mText,
mTextView.getWidth(),
mTextView.getHeight(),
mTextView.getPaint(),
newValueOfSpacingMultiplier,
newValueOfSpacingExtra,
newValueOfIncludeFontPadding);

编辑

我想说的是,没有必要“在 Android API 版本 8 中实现它们”。一旦设置了参数,在 TextView 的 生命周期内永远不会改变。您可以通过简单的测试来检查它。只需在设置任何文本之前(例如,在 sample codeonCreate() 中)和之后(在 mPagination 之后的 onGlobalLayout() 中)查看它们的值 初始化或在 update() 方法中)。

TextView 的所有参数传递给 Pagination 的 构造函数的想法是在底层使用 Layout 类的相同配置实例TextViewPagination。因此,无需将参数传递给之前使用 gettersTextView 检索到的 Pagination 的 构造函数,您可以实现相同配置的 Layout 通过将您想要的任何值传递给 Pagination 并使用适当的 setters 将相同的值设置为 TextView 已经在 中满足API 版本 8

关于android - 如何为旧版 Android API 实现 TextView 行距方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32546288/

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