当前位置: 首页 > article >正文

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();

}

http://www.kler.cn/a/231604.html

相关文章:

  • MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并--封装到存储过程中
  • 【C#】C#编程基础:探索控制台应用与数据操作
  • uniapp自动注册机制:easycom
  • MySql 日期周处理方式
  • mybatis的动态sql用法之排序
  • mybatis-plus: mapper-locations: “classpath*:/mapper/**/*.xml“配置!!!解释
  • 数据结构:双向链表
  • 负载均衡SLB
  • elasticsearch重置密码操作
  • Netty中使用编解码器框架
  • 【数据结构】二叉树的三种遍历(非递归讲解)
  • 通过docker-compose部署NGINX服务,并使该服务开机自启
  • Fink CDC数据同步(四)Mysql数据同步到Kafka
  • 数据同步工具对比——SeaTunnel 、DataX、Sqoop、Flume、Flink CDC
  • 电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)
  • golang 引入swagger(iris、gin)
  • Tkinter教程21:Listbox列表框+OptionMenu选项菜单+Combobox下拉列表框控件的使用+绑定事件
  • libevent源码解析--event,event_callback,event_base
  • 前端bug手册
  • 【npm】修改npm全局安装包的位置路径
  • 极智芯 | 解读国产CPU系列汇总
  • 【c++】STL详解(一):string类的使用
  • 子类将基类的虚函数替换为其自己的虚函数,共用的一个虚函数表,怎么不影响基类
  • 【python】绘制春节烟花
  • 微信小程序(三十九)表单信息收集
  • Java项目使用jasypt加密和解密配置文件中关键信息