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

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"><TextViewandroid: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设置给组件。

<TextViewandroid: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);//设置titlebuilder.setTitle("提示");//设置提示信息builder.setMessage("是否退出");//设置确定按钮builder.setPositiveButton("是", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//关闭AcitivityLanguageActivity.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() {@Overridepublic 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() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {checkeds[which]=isChecked;}});builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic 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();}

相关文章:

  • Linux下centos操作系统安装Mysql8.0过程及踩坑填补
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Menu组件
  • 通过Spring @Validated 更优雅的实现参数校验
  • Vue3中路由配置Catch all routes (“*“) must .....问题
  • vscode的vetur文档格式化失效
  • 零基础学Python之面向对象
  • 计算机网络相关题目及答案(第五章)
  • WINDOWS搭建NFS服务器
  • NC6X单点登录设计文档说明
  • 【深入浅出Java性能调优】「底层技术原理体系」详细分析探索Java服务器性能监控Metrics框架的实现原理分析(Dropwizard度量基础案例指南)
  • MinMaxScaler, StandardScaler数据预处理中常用的两种缩放方法,用于将数据标准化或归一化到特定的范围或分布
  • 瑞芯微推理RKNN使用
  • stable-diffusion | v1-5-pruned.ckpt和v1-5-pruned-emaonly.ckpt的区别
  • HarmonyOS 鸿蒙应用开发(九、还是蓝海,如何贡献第三方库)
  • 嵌入式学习Day14 C语言 --- 位运算
  • SegmentFault for Android 3.0 发布
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • ➹使用webpack配置多页面应用(MPA)
  • CSS 提示工具(Tooltip)
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • js正则,这点儿就够用了
  • Median of Two Sorted Arrays
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Vue 2.3、2.4 知识点小结
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • Yeoman_Bower_Grunt
  • Yii源码解读-服务定位器(Service Locator)
  • 从零开始的无人驾驶 1
  • 对JS继承的一点思考
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端设计模式
  • 悄悄地说一个bug
  • 如何使用 JavaScript 解析 URL
  • 使用Gradle第一次构建Java程序
  • 我是如何设计 Upload 上传组件的
  • 优秀架构师必须掌握的架构思维
  • Prometheus VS InfluxDB
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 大数据全解:定义、价值及挑战
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #FPGA(基础知识)
  • #预处理和函数的对比以及条件编译
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (十一)手动添加用户和文件的特殊权限
  • (原)Matlab的svmtrain和svmclassify
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException