我正在试图改变我的活动的语言时,一个新的项目是微调内选择(只是不活动的整个应用程序)。微调器包含文本重新presenting的语言我想通过(法语,英语等)
切换在我的res文件夹我在正确的文件夹,即值-FR法语每种语言单独的strings.xml。哪有我,在微调项目的变化,从正确的strings.xml对应?负载
@覆盖公共无效的onCreate(捆绑savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.main); ArrayList的<串GT;语言=新的ArrayList<串GT;(); languages.add(英语); languages.add(法国); 微调微调=(微调)findViewById(R.id.spinner); spinner.setAdapter(新ArrayAdapter<串GT;(这一点,android.R.layout.simple_spinner_dropdown_item,语言)); spinner.setOnItemSelectedListener(本);}@覆盖公共无效onItemSelected(适配器视图<>为arg0,视图V,INT位置,长ARG3){ Log.v(价值,语言值:+位置); 如果(位置== 0){ //改变文本英语 } 其他{ //更改文本到法国 }}
解决方案
私人无效的setLocale(string地区code){ 区域设置区域=新区域(区域code); Locale.setDefault(区域); 配置配置=新配置(); config.locale =区域; 。getBaseContext()getResources()updateConfiguration(。配置,getBaseContext()getResources()getDisplayMetrics());}
![Excel文件xl文件夹里没有sharedStrings.xml文件,怎么解决](https://p.xsw88.cn/allimgs/daicuo/20230906/3291.png)
在AndroidManifest.xml中的活动标签
的android:configChanges =语言环境
所以,你onItemSelected()方法应该是这样的:
@覆盖公共无效onItemSelected(适配器视图<>为arg0,视图V,INT位置,长ARG3){ Log.v(价值,语言值:+位置); 如果(位置== 0){ 的setLocale(EN); } 其他{ 的setLocale(FR); }}
我的答案是基于:
如何强制语言Android应用程序
Android :应用程序本身内改变区域设置
I am am trying to change the language of my activity (just the activity not the whole app) when a new item is selected within a spinner. The spinner contains Text representing the language I would like to switch through (French, English etc.)
In my res folder I have separate strings.xml for each language in the correct folders i.e. values-fr for French. How can I, on the changing of the spinner item, load from the correct strings.xml which corresponds?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<String> languages = new ArrayList<String>();
languages.add("English");
languages.add("French");
Spinner spinner = (Spinner)findViewById(R.id.spinner);
spinner.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, languages));
spinner.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> arg0, View v, int position, long arg3) {
Log.v("Value", "Language Value: " + position);
if(position == 0){
//Change text to English
}
else{
//Change text to French
}
}
解决方案
private void setLocale(String localeCode){
Locale locale = new Locale(localeCode);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
in AndroidManifest.xml in activity tag
android:configChanges="locale"
So your onItemSelected() method should look like this:
@Override
public void onItemSelected(AdapterView<?> arg0, View v, int position, long arg3) {
Log.v("Value", "Language Value: " + position);
if(position == 0){
setLocale("en");
}
else{
setLocale("fr");
}
}
My answer is based on:
how to force language in android application
Android : changing Locale within the app itself
相关推荐
最新文章