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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/459396.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地安全策略 | 服务器管理 | 配置项

本地安全策略 Windows 本地安全策略是一组在本地计算机上配置的安全设置&#xff0c;用于管理计算机的安全性和访问控制。这些策略是针对单个计算机的&#xff0c;与域策略不同&#xff0c;本地安全策略不通过域控制器进行集中管理。本地安全策略通过本地组策略编辑器进行配置…

mac电脑flutter环境配置,解决疑难问题

准备工作 首先搭建flutter的环境需要使用到flutter的sdk&#xff0c;可以直接跳去官网下载&#xff1a;Choose your first type of app - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter&#xff0c;下载时要注意你电脑所使用的芯片是Intel的还是苹果的芯片。 下载好的…

C#调用WechatOCR.exe实现本地OCR文字识别

最近遇到一个需求&#xff1a;有大量的扫描件需要还原为可编辑的文本&#xff0c;很显然需要用到图片OCR识别为文字技术。本来以为这个技术很普遍的&#xff0c;结果用了几个开源库&#xff0c;效果不理想。后来&#xff0c;用了取巧的方法&#xff0c;直接使用了WX的OCR识别模…

Elasticsearch:使用 LangChain 文档拆分器进行文档分块

使用 Elasticsearch 嵌套密集向量支持 这个交互式笔记本将&#xff1a; 将模型 “sentence-transformers__all-minilm-l6-v2” 从 Hugging Face 加载到 Elasticsearch ML Node 中使用 LangChain 分割器将段落分块成句子&#xff0c;并使用嵌套密集向量将它们索引到 Elasticse…

07:Kubectl 命令详解|K8S资源对象管理|K8S集群管理(重难点)

Kubectl 命令详解&#xff5c;K8S资源对象管理&#xff5c;K8S集群管理 kubectl管理命令kubectl get 查询资源常用的排错命令kubectl run 创建容器 POD原理pod的生命周期 k8s资源对象管理资源文件使用资源文件管理对象Pod资源文件deploy资源文件 集群调度的规则扩容与缩减集群更…

Python tkinter树状目录窗口实现

通过tkinter GUI实现读取特定目录下所有目录及文件并在窗口中可选择显示。 通过左右布局实现&#xff0c;左侧为树状目录&#xff0c;右侧为输入框和显示文本框。 目录 tkinter树状目录 左侧树状目录 右侧显示 调用实现窗口 打开目录 打开py文件 总结 tkinter树状目录 …

使用influxdb+Grafana+nmon2influxdb+nmon实时监控vps性能

Grafana可以用来实时查看linux系统的各种性能数据。 1、安装环境&#xff1a; centos 7influxdb1.7.6grafana-4.6.3-1nmon2influxdb-2.1.7nmon-16m 2、安装influxdb&#xff1a; 下载rpm包&#xff1a; influxdb官网&#xff1a;https://docs.influxdata.com/influxdb/v2.0…

Win10系统启动盘制作

前面简单介绍了操作系统&#xff0c;但是怎样将操作系统安装到磁盘上呢。 一、操作系统引导 电脑启动大致流程&#xff1a; 预引导阶段&#xff1a;计算机通电后&#xff0c;系统自检&#xff0c;检查硬件是否正常。 引导阶段&#xff1a;BIOS或EFI在完成基本的硬件检测和平台初…

Visual Studio 2022中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案

目录 发现问题 解决办法 第一步 第二步 第三步 第四步 最后一步 问题解决 发现问题 如果大家也遇到下面这种问题&#xff0c;可能是没有include文件夹中没有bits/stdc.h 解决办法 第一步 打开一个C项目&#xff0c;鼠标移动至头文件上右击&#xff0c;选择转到文档或…

基于SpringBoot3的快速迭代平台

SpringBoot3的快速开发平台 前言一、技术栈二、项目结构三、总结 前言 MateBoot是一个基于SpringBoot3的快速开发平台&#xff0c;采用前后端分离的模式&#xff0c;前端采用Element Plus组件&#xff0c;后端采用SpringBoot3、Sa-token、Mybatis-Plus、Redis、RabbitMQ、Fast…

2024.2.6

1.现有无序序列数组为23,24,12,5,33,5347&#xff0c;请使用以下排序实现编程 函数1:请使用冒泡排序实现升序排序 函数2:请使用简单选择排序实现升序排序 函数3:请使用快速排序实现升序排序 函数4:请使用插入排序实现升序排序 #include<stdio.h> #include<string.h&g…

JVM-运行时数据区程序计数器

运行时数据区 Java虚拟机在运行Java程序过程中管理的内存区域&#xff0c;称之为运行时数据区。《Java虚拟机规范》中规定了每一部分的作用。 程序计数器的定义 程序计数器&#xff08;Program Counter Register&#xff09;也叫PC寄存器&#xff0c;每个线程会通过程序计数器…