以前,我在stackoverflow上问了一个题为“ How to paginate text in Android”的问题,这导致了一个很好的答案,对我有很大帮助。现在,我需要在较旧的Android API上移植代码,以防万一是Android API版本8,因此我可以在从Android 2.2开始的几乎所有Android设备上运行我的应用程序。我遇到的问题是答案中使用的某些方法仅在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中实现它们。我可以使用Android TextView的源代码来提示here。不完全了解。 最佳答案 如果我们查看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生命周期内更改。您可以通过简单的测试进行检查。只需在设置任何文本之前(例如,在sample code的onCreate()中)和之后(在onGlobalLayout()初始化之后的mPagination中或在update()方法中)查看它们的值。将TextView的所有参数传递给Pagination's构造函数的想法是在Layout和TextView的内部使用相同配置的Pagination类实例。因此,您无需将参数传递给先前使用Pagination's从TextView中检索到的getters构造函数,而是可以将想要的任何值传递给Layout并将相同的值设置为带有在Pagination中已经满足的正确TextView。
10-08 18:41