Android 7.0以上webView会影响中英文切换

本文详细介绍了在Android7.0及以上版本中,如何解决因添加WebView组件而导致的应用内中英文切换异常问题。通过在BaseActivity的onCreate方法中重新设置语言环境,并在Application的onCreate方法中初始化WebView,可以有效避免该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android 7.0版本以上,如果项目内添加了WebView会影响中英文切换。表现在我们项目内的现象是,杀死应用后,点击进入应用内的webView界面,然后退出。英文的app会出现中文的字体。之前还以为是项目正式版和测试版的区别。经过百度,发现Android 7.0以上的版本,会出现这样的问题。具体实现的代码如下:

第一步:

再BaseActivity的onCreate方法内再设置一遍当前的语言环境:

//保存的中英文字段
String language = SharedPreferenceManager.getStringValue("language",
        this);
//如果没有保存过,就使用系统的语言
if (TextUtils.isEmpty(language)) {
    if (CommonUtil.getLanguage(this).equals(Locale.CHINA.getLanguage())
            || CommonUtil.getLanguage(this).equals(Locale.CHINESE.getLanguage())) {
        setLocale1(Locale.SIMPLIFIED_CHINESE);
    } else {
        setLocale1(Locale.ENGLISH);
    }
} else {
    if (language.equals("zh")) {

        setLocale1(Locale.SIMPLIFIED_CHINESE);
    } else {
        setLocale1(Locale.ENGLISH);
    }
}

 

/**
 * 设置语言
 * @param locale
 */
public static void setLocale1(Locale locale) {
    Locale.setDefault(locale);
    Context context = TalkApplication.getContext();
    final Resources resources = context.getResources();
    final Configuration config = resources.getConfiguration();
    config.setLocale(locale);
    context.getResources().updateConfiguration(config,
            resources.getDisplayMetrics());
}

第二步:需要在Application的onCreate内调用方法:

//处理Android7(N)webview导致应用内语言失效的问题
private void initWebView() {
    new WebView(this).destroy();
}

这样就可以完美解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值