我正在创建一个Android应用程序。我想要一个屏幕,要求用户选择他们的首选语言。这是我的listview的代码。
public class LanguageSelect extends Activity {
int[] IMAGES = {R.drawable.english, R.drawable.french, R.drawable.spanish, R.drawable.german, R.drawable.swedish, R.drawable.russia};
String[] NAMES = {"English", "Français", "Español", "Deutsche", "svenska", "русский"};
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_language_select);
ListView listView = (ListView)findViewById(R.id.Lang);
CustomAdpater customadapter = new CustomAdpater();
listView.setAdapter(customadapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if(i==0)
{
LangHelper.changeLocale(this.getResources(), "fr");
}
}
});
}
class CustomAdpater extends BaseAdapter{
@Override
public int getCount() {
return IMAGES.length;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup)
{
view = getLayoutInflater().inflate(R.layout.custom_layout_lang,null);
ImageView imageView=(ImageView)view.findViewById(R.id.imageView);
TextView textViewLang=(TextView)view.findViewById(R.id.textViewLang);
imageView.setImageResource(IMAGES[i]);
textViewLang.setText(NAMES[i]);
return view;
}
}}
我还从我发现的教程中为我希望使用的语言创建了几个string.xml文件。见下图
我还创建了一个LangHelper类。见下文
public class LangHelper {
public static void changeLocale(Resources res, String locale)
{
Configuration config;
config = new Configuration(res.getConfiguration());
switch (locale) {
case "es":
config.locale = new Locale("es");
break;
case "fr":
config.locale = new Locale("fr");
break;
default:
config.locale = new Locale("en");
}
res.updateConfiguration(config, res.getDisplayMetrics());
}}
我现在的问题是将LangHelper类连接到Listview,以便当用户从列表中选择所需的语言时,以下页面即完整的应用程序现在被翻译成用户选择的语言
答案 0 :(得分:0)
是的,您的代码是正确的,如果您需要而不刷新应用程序
然后在应用课程中,您需要在onCreate()
方法中调用此方法
String languageSelected = "en";//selected language
Locale myLocale = new Locale(languageSelected);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
getActivity().onConfigurationChanged(conf);//Call this method
您需要执行此特定语言才能在Application类中选择。
答案 1 :(得分:0)
试试这个:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView textViewLang=(TextView)view.findViewById(R.id.textViewLang);
String lang = textViewLang.getText():
LangHelper.changeLocale(this.getResources(), lang);
}
});