Android 简单自定义对话框:语言切换

先看效果。。。

Android 简单自定义对话框:语言切换_第1张图片

先准备好各种语言的strings.xml...

右键values--->New--->Values Resource File...

Android 简单自定义对话框:语言切换_第2张图片

文件名为strings,下面点击Locale,在点那个两个大于号的>>按钮,选择一个语言。。。OK,最后把原来的默认strings.xml里面的东西复制过来,一个个翻译好!

Android 简单自定义对话框:语言切换_第3张图片

还需要Dialog的layout文件。。。叫做dialog_language_layout.xml




    

        

        
    

    

        

        

        

            

实际设计如图:

Android 简单自定义对话框:语言切换_第4张图片

还有Title布局。。。名字是dialog_title.xml




    

        
    


Android 简单自定义对话框:语言切换_第5张图片

最后是逻辑代码。。。

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)