Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修补Android SDK的早期版本_Android_Textview - Fatal编程技术网

修补Android SDK的早期版本

修补Android SDK的早期版本,android,textview,Android,Textview,我目前正在使用TextView中的自定义ReplacementSpan呈现CJK字符。而早期版本的SDK(API 22之前)中的断线策略有一个小问题,不能像我们希望的那样工作。如何修补这些SDK以使我的应用程序在旧设备上工作 我考虑过对TextView(以及DynamicLayout和StaticLayout)进行子类化,然后覆盖所有应该修改的方法。但是,其中一些方法是私有的或仅在包中可见,这意味着我不能重写它 更新 我尝试过对TextView、StaticLayout进行子类化,并克隆了许多其

我目前正在使用
TextView
中的自定义
ReplacementSpan
呈现CJK字符。而早期版本的SDK(API 22之前)中的断线策略有一个小问题,不能像我们希望的那样工作。如何修补这些SDK以使我的应用程序在旧设备上工作

我考虑过对
TextView
(以及
DynamicLayout
StaticLayout
)进行子类化,然后覆盖所有应该修改的方法。但是,其中一些方法是私有的或仅在包中可见,这意味着我不能重写它

更新


我尝试过对
TextView
StaticLayout
进行子类化,并克隆了许多其他类。在反射的帮助下,由于Java该死的访问控制,我仍然无法让它工作。有无数的私有嵌套类和只能在同一个包中访问的类,这意味着您必须将它们克隆到您的包中才能使一切正常工作。我真的厌倦了。

您是否尝试实施自己的布局?您可以重写TextView.makeNewLayout()并从中设置自己的实现。显然是深思熟虑。@Zielony谢谢你的帮助。是的,我刚刚注意到makeNewLayout()是一个受保护的方法,它将是入口点。我现在就开始。顺便说一句,“带反射”是什么意思?TextView中的布局mLayout是私有的,makeNewLayout不返回任何内容。要设置该字段,必须使用Java反射API。@Zielony知道了。我不熟悉Java,只知道私有成员不是继承的。再次感谢您的帮助:)您是否尝试实现自己的布局?您可以重写TextView.makeNewLayout()并从中设置自己的实现。显然是深思熟虑。@Zielony谢谢你的帮助。是的,我刚刚注意到makeNewLayout()是一个受保护的方法,它将是入口点。我现在就开始。顺便说一句,“带反射”是什么意思?TextView中的布局mLayout是私有的,makeNewLayout不返回任何内容。要设置该字段,必须使用Java反射API。@Zielony知道了。我不熟悉Java,只知道私有成员不是继承的。再次感谢您的帮助:)