Android(安卓)简单自定义对话框:语言切换
16lz
2021-01-26
先看效果。。。
先准备好各种语言的strings.xml...
右键values--->New--->Values Resource File...
文件名为strings,下面点击Locale,在点那个两个大于号的>>按钮,选择一个语言。。。OK,最后把原来的默认strings.xml里面的东西复制过来,一个个翻译好!
还需要Dialog的layout文件。。。叫做dialog_language_layout.xml
<?xml version="1.0" encoding="utf-8"?>
实际设计如图:
还有Title布局。。。名字是dialog_title.xml
<?xml version="1.0" encoding="utf-8"?>
最后是逻辑代码。。。
private void showLanguageDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this);//简单的对话框builder //以下设置自定义的布局 LayoutInflater inflater = getLayoutInflater(); final View layout = inflater.inflate(R.layout.dialog_language_layout, null); View titleView = inflater.inflate(R.layout.dialog_title, null); builder.setView(layout); builder.setCustomTitle(titleView);//设置自定义的标题 //初始化两个选择的控件 final RadioButton radioButton_eng = layout.findViewById(R.id.radio_eng); final RadioButton radioButton_sim_chn = layout.findViewById(R.id.radio_sim_chn); //以下设置中英选项二选一 radioButton_eng.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (radioButton_eng.isChecked()) { radioButton_sim_chn.setChecked(false); } } }); radioButton_sim_chn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (radioButton_sim_chn.isChecked()) { radioButton_eng.setChecked(false); } } }); //初始化确定、取消两个按钮 Button btn_ok = layout.findViewById(R.id.dialog_language_ok); Button btn_cancel = layout.findViewById(R.id.dialog_language_cancel); //对话框标题 final TextView txt_title = layout.findViewById(R.id.txt_dialog_language_title); txt_title.setText("Language/语言"); final AlertDialog dlg = builder.create();//简单的对话框 dlg.setCanceledOnTouchOutside(false);//设置点击其他区域时不能取消对话框 //设置确定按钮事务 btn_ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //开始更改语言 Resources resources = getResources(); Configuration config = resources.getConfiguration(); DisplayMetrics dm = resources.getDisplayMetrics(); if (radioButton_eng.isChecked()) { config.locale = Locale.ENGLISH; radioButton_sim_chn.setChecked(false); } else if (radioButton_sim_chn.isChecked()) { config.locale = Locale.SIMPLIFIED_CHINESE; radioButton_eng.setChecked(false); } resources.updateConfiguration(config, dm);//更新语言配置 if (radioButton_eng.isChecked() || radioButton_sim_chn.isChecked()) { Intent intent = new Intent(); intent.setClassName(getPackageName(), "trial.asignment.graduation.ad.AccountSettingActivity"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent);//更改语言配置需要重新启动Activity。。。 } } }); //点击取消按钮的事务:啥都不干 btn_cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dlg.dismiss(); } }); dlg.show();//最后别忘了把我们的Dialog显示出来。。。 }
更多相关文章
- 关于android中alarm的使用
- Android(安卓)Room 框架学习
- Android(安卓)搜索框:SearchView 的属性和用法详解
- android ListView+CheckBox实现单选
- Android在诸如editText等组件设置输入法半屏幕显示的说明
- Android(安卓)使用自定义Dialog打造ActionSheet菜单
- Android(安卓)文件系统的权限设置
- Android支持RTL(从右向左)语言
- AndroidStudio2.2.3设置