2

之前,我在 stackoverflow 上问了一个题为:“如何在 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()

第二个似乎已经在这里描述为:

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

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

4

1 回答 1

2

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

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's构造函数,这些默认值适用于API 8+

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

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

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

编辑

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

TextView将 的所有参数传递给Pagination's构造函数的想法是在 和的内部使用相同配置的Layout类实例。因此,与其将参数传递给先前从with检索的构造函数,您可以通过传递您想要的任何值并将相同的值设置为with已经满足的正确值来实现相同的配置。TextViewPaginationPagination'sTextViewgettersLayoutPaginationTextViewsettersAPI version 8

于 2015-10-02T16:40:01.167 回答