Android:国际化&弹出框

3.13 风格与主题、国际化

1、应用国际化

应用国际化,通过修改系统语言,应用显示语言跟着改变。

选择Locale,点击>>符号。

创建多个国家,地区strings.xml文件,有一个默认strings.xml文件,各个stirngs.xml中<string>标签中保持一致。

示例:

创建t_language.xml文件,

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical" android:layout_width="match_parent"

    android:layout_height="match_parent">

    <TextView

        android:text="@string/header"

        android:layout_width="match_parent"

        android:layout_height="wrap_content">

    </TextView>

</LinearLayout>

默认strings.xml文件:

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="app_name">app name</string>

    <string name="header">Local English</string>

</resources>

国际化中文:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">应用名</string>

<string name="header">简体中文</string>

</resources>

国际化繁体中文:

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="app_name">應用名</string>

    <string name="header">繁体中文</string>

</resources>

在Activity中直接更新语言,最好在执行setContentView方法之前。

//在Activity中设置语言

//获取资源对象

Resources resources=getResources();

//获取设置对象

Configuration configuration= resources.getConfiguration();

//获取屏幕参数

DisplayMetrics display=resources.getDisplayMetrics();

//设置语言

configuration.locale=Locale.CHINA;

//configuration.locale=Locale.ENGLISH;

//configuration.locale=Locale.TAIWAN;

resources.updateConfiguration(configuration,display);

设置风格,将layout中重复的样式,整合成一种风格,直接设置。

在src/values/styles.xml中创建<style>

<style name="back">

    <item name="android:background">#FF003377</item>

</style>

在layout中设置style,设置style属性,将我们配置的style设置给组件。

<TextView

    android:text="@string/header"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    style="@style/back">

</TextView>

2、风格与主题

设置应用主题

在src/values/styles.xml文件创建

<!-- Base application theme. -->

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    <!-- Customize your theme here. -->

    <item name="colorPrimary">@color/colorPrimary</item>

    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>

    <item name="colorAccent">@color/colorAccent</item>

</style>

修改配置文件AndroidManifest.xml

android:theme="@style/AppTheme"

3、弹出对话框

    使用AlertDialog.Builder类,建造者模式创建dialog。

示例1:

//创建open Dialog,

public void openDialog(){

    //AlertDialog.Builder:构建弹窗

    AlertDialog.Builder builder=new AlertDialog.Builder(this);

    //设置title

    builder.setTitle("提示");

    //设置提示信息

    builder.setMessage("是否退出");

    //设置确定按钮

    builder.setPositiveButton("是", new DialogInterface.OnClickListener() {

        @Override

        public void onClick(DialogInterface dialog, int which) {

            //关闭Acitivity

            LanguageActivity.this.finish();

            //关闭dialog

            //dialog.dismiss();

        }

    });

    //设置取消按钮

    builder.setNegativeButton("否",null);

    //创建弹窗

    AlertDialog alertDialog=builder.create();

    //显示弹窗

    alertDialog.show();

}

示例2:

带单选项的弹窗

//单选项弹窗

public void openSingleChoiceDialog(){

    String[] choices=new String[]{"选项1","选项2","选项3"};

    //创建弹窗

    //setSingleChoiceItems方法,设置单选项,checkedItem:设置默认选择Item;

    AlertDialog.Builder builder= new AlertDialog.Builder(this)

            .setTitle("单选")

            .setSingleChoiceItems(choices, 1, new DialogInterface.OnClickListener() {

                @Override

                public void onClick(DialogInterface dialog, int which) {

                    Toast.makeText(mContext,"选择"+which,Toast.LENGTH_SHORT).show();

                }

            })

            .setPositiveButton("确认",null);

    AlertDialog alertDialog= builder.create();

    alertDialog.show();

}

示例3:

带多选项的弹窗

//多选框弹窗

public void openMultiChoiceDialog(){

    final String[] choices=new String[]{"选项1","选项2","选项3"};

    final boolean[] checkeds=new boolean[]{false,false,false};

    //创建弹窗

    //setSingleChoiceItems方法,设置单选项,checkedItem:设置默认选择Item;

    AlertDialog.Builder builder= new AlertDialog.Builder(this);

    builder.setTitle("多选");

    builder.setMultiChoiceItems(choices, checkeds, new DialogInterface.OnMultiChoiceClickListener() {

        @Override

        public void onClick(DialogInterface dialog, int which, boolean isChecked) {

            checkeds[which]=isChecked;

        }

    });

    builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {

        @Override

        public void onClick(DialogInterface dialog, int which) {

            String text="";

            for (int i=0;i<choices.length;i++){

                if (checkeds[i]){

                    text +=choices[i];

                }

            }

            Toast.makeText(mContext,text,Toast.LENGTH_SHORT).show();

        }

    });

    AlertDialog alertDialog= builder.create();

    alertDialog.show();

}

相关推荐

  1. vue 消息

    2024-02-08 07:46:03       31 阅读
  2. css 实现 Popover 样式

    2024-02-08 07:46:03       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-08 07:46:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-08 07:46:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-08 07:46:03       82 阅读
  4. Python语言-面向对象

    2024-02-08 07:46:03       91 阅读

热门阅读

  1. 20240206作业

    2024-02-08 07:46:03       38 阅读
  2. QT学习(五)C++函数重载

    2024-02-08 07:46:03       53 阅读
  3. Redis——面试+思想+应用

    2024-02-08 07:46:03       43 阅读
  4. 【Eclipse插件开发】3工作台workbench探索【下篇】

    2024-02-08 07:46:03       53 阅读
  5. 算法学习系列(三十二):背包问题

    2024-02-08 07:46:03       43 阅读
  6. 隐私计算技术创新赋能金融数字化转型

    2024-02-08 07:46:03       64 阅读
  7. C++之多线程(multi-thread)

    2024-02-08 07:46:03       71 阅读
  8. PostgreSQL不停机迁移数据

    2024-02-08 07:46:03       45 阅读
  9. sklearn.preprocessing 特征编码汇总

    2024-02-08 07:46:03       49 阅读
  10. Rust语言入门小结(第1篇)

    2024-02-08 07:46:03       52 阅读
  11. 设计模式(行为型模式)中介者模式

    2024-02-08 07:46:03       46 阅读
  12. LeetCode动态规划的解题思路

    2024-02-08 07:46:03       43 阅读
  13. HTML系列 -> <meta charset=“utf-8“>

    2024-02-08 07:46:03       52 阅读
  14. Spark的timestamp 数据时间问题

    2024-02-08 07:46:03       59 阅读