Java 将函数应用于TextView中的所有字符串

Java 将函数应用于TextView中的所有字符串,java,android,arabic,Java,Android,Arabic,我有一个功能来连接断开连接的阿拉伯语字母表(这个问题只出现在那些没有安装阿拉伯语的手机上) 我可以成功地将此功能用于TextView以这种方式应用它: text.setText(ArabicReshaper.shape(whateverstring)); 问题是我的应用程序中有太多的字符串。我想知道是否有其他方法可以一次性将整形器功能应用于所有文本视图和按钮,而不是逐个手动执行 您可以扩展TextView类,重写setText方法,并在应用程序中的任何地方使用它,而不是常规TextView您可

我有一个功能来连接断开连接的阿拉伯语字母表(这个问题只出现在那些没有安装阿拉伯语的手机上)

我可以成功地将此功能用于
TextView
以这种方式应用它:

text.setText(ArabicReshaper.shape(whateverstring));

问题是我的应用程序中有太多的字符串。我想知道是否有其他方法可以一次性将整形器功能应用于所有
文本视图
按钮
,而不是逐个手动执行

您可以扩展
TextView
类,重写
setText
方法,并在应用程序中的任何地方使用它,而不是常规
TextView

您可以扩展
TextView
类,重写
setText
方法,并在应用程序中的任何地方使用它,而不是常规
TextView
例如

public class MyTextView extends TextView {
    private CharSequence mText;

    public MyTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        super.setText(ArabicReshaper.shape(text), type);
    }


}


这太棒了!唯一的问题是,如果我这样做:
public void setText(String text){super.setText(getString(text));}private String getString(String str){arabicshapping.shape(str);return str;}
它不起作用。但是如果我像你那样做的话,它就会起作用。有什么原因吗?我这样做的原因是因为我想首先获得区域设置。如果语言环境设置为阿拉伯语,只有这样我才想应用这个函数。这非常有效!唯一的问题是,如果我这样做:
public void setText(String text){super.setText(getString(text));}private String getString(String str){arabicshapping.shape(str);return str;}
它不起作用。但是如果我像你那样做的话,它就会起作用。有什么原因吗?我这样做的原因是因为我想首先获得区域设置。如果语言环境设置为阿拉伯语,那么我才想应用此函数。我扩展了
TextView
,如果我使用其他人提供的示例,效果会很好。但是,我只想在区域设置为阿拉伯语时使用该函数。您可以在自定义
setText
中添加区域设置检查。如果您需要在语言环境更改为阿拉伯语时更新所有文本视图,您可能会为阿拉伯语语言环境创建单独的字符串文件,因此所有活动文本视图都将自动重新创建。我扩展了
TextView
,如果我使用其他人提供的示例,效果会非常好。但是,我只想在区域设置为阿拉伯语时使用该函数。您可以在自定义
setText
中添加区域设置检查。如果您需要在语言环境更改为阿拉伯语时更新所有文本视图,您可能有单独的阿拉伯语语言环境字符串文件,因此所有活动文本视图都将自动重新创建