在Android Activity中更改字符串语言

Tom*_* F. 4 java android locale android-activity

我正在做一个多语言的应用程序.我理解string.xml的概念,即将应用程序语言设置为手机的默认语言.有什么方法可以覆盖这个吗?例如,如果我在西班牙使用西班牙语手机,但我仍然希望使用英语应用程序?

aro*_*ire 15

您可以使用简单的功能以编程方式更改应用程序的语言(区域设置).您只需要实现一个类似于下面接收字符串作为参数的方法(例如英语为'en',西班牙语为'es'),您可以在其中配置应用的区域设置并刷新当前活动反映变化.在您再次手动更改之前,不会更改您应用的区域设置.

public void setLocale(String lang) { 
    myLocale = new Locale(lang); 
    Resources res = getResources(); 
    DisplayMetrics dm = res.getDisplayMetrics(); 
    Configuration conf = res.getConfiguration(); 
    conf.locale = myLocale; 
    res.updateConfiguration(conf, dm); 
    Intent refresh = new Intent(this, AndroidLocalize.class); 
    startActivity(refresh); 
    finish();
} 
Run Code Online (Sandbox Code Playgroud)

确保导入以下包:

import java.util.Locale; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.util.DisplayMetrics; 
import android.content.res.Resources;
import android.content.res.Configuration;
Run Code Online (Sandbox Code Playgroud)

也可以在活动代码中的清单中添加 android:configChanges="locale|orientation"