当前位置: 首页 > 知识库问答 >
问题:

Android设置Textview和EditText的区域设置

董高逸
2023-03-14

我正在开发一个应用程序,我显式地将应用程序的语言环境设置为阿拉伯语。然而,我想收集英语的电话号码。我如何才能将EditText和TextView的语言环境显式地设置为美国英语。

下面是我如何设置应用程序区域设置的。我有一门助手课

public class LocaleHelper extends ContextThemeWrapper {

    public LocaleHelper(Context base) {
        super(base, R.style.MyTheme);
    }

    @SuppressWarnings("deprecation")
    public static ContextWrapper wrap(Context context, String language) {
        Configuration config = context.getResources().getConfiguration();
        if (!language.equals("")) {
            Locale locale = new Locale(language);
            Locale.setDefault(locale);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                setSystemLocale(config, locale);
            } else {
                setSystemLocaleLegacy(config, locale);
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                config.setLayoutDirection(locale);
                context = context.createConfigurationContext(config);
            } else {
                context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
            }
        }
        return new LocaleHelper(context);
    }

    @SuppressWarnings("deprecation")
    private static Locale getSystemLocaleLegacy(Configuration config) {
        return config.locale;
    }

    @TargetApi(Build.VERSION_CODES.N)
    private static Locale getSystemLocale(Configuration config) {
        return config.getLocales().get(0);
    }

    @SuppressWarnings("deprecation")
    private static void setSystemLocaleLegacy(Configuration config, Locale locale) {
        config.locale = locale;
    }

    @TargetApi(Build.VERSION_CODES.N)
    private static void setSystemLocale(Configuration config, Locale locale) {
        config.setLocale(locale);
    }
}

在我的活动中,我在attachBaseContext中使用这个助手,如下所示:

@Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(LocaleHelper.wrap(newBase, "ar"));
}

如何分别为我们设置EditText或TextView的区域设置?

共有2个答案

辛盛
2023-03-14

问题是,应用于EditText的自定义字体没有英文数字,只有阿拉伯数字,所以无论我怎么尝试,只有阿拉伯数字会显示出来,这是有意义的。

洪浩波
2023-03-14

您可以使用String.format()Locale. ENGLISH显示英文数字而不是阿拉伯数字

实例

String txtPrice = String.format(Locale.ENGLISH, "%d", item.getPrice());
mItemPriceTextView.setText(txtPrice);
 类似资料:
  • 我想强制我的Symfony 2.5应用程序的区域设置为。我希望这个区域设置用于strftime()函数。 我的: 我正在我的一个控制器中使用以下代码来调试: 当这样执行时,它显示:。 但是,当第一行未注释时,它会显示:,因此区域设置已安装在系统中并正常工作。 我如何使Symfony始终使用配置中指定的语言环境? $locale-a:

  • 我安装了三个区域设置捆绑包: JMSi18nRoutingBundle 我的如下所示: 一切都按我的喜好工作,除了我在日志中发现了一个错误: 在堆栈中我发现:的区域设置,但是,我不明白如何将区域设置设置为“en_US”。 我想它来自于对Lunetics的猜测,但是有“en_US”的人应该匹配“en”,而不是“en_US”。 我的主要问题是,我不知道如何跟踪这一点。当我用自己的设置连接到主页时,首先

  • 在*NIX系统上,您可以执行来获取可用区域设置的列表。 什么是Windows中的等效命令(或操作)? 我在Internet上看到过列表,但大多数列表都是区域设置标签,而不是实际的区域设置名称。另外,并不是所有的系统都保证全部安装,对吧? 注意,这里我对“locale”的定义是“locale字符串”,即C的的第二个参数,它将导致一个非空的返回值。 编程答案也很好,我只是厌倦了用暴力猜测Windows

  • 我正在尝试使用Android构建系统中的重新配置和重新配置。 Android Studio 1.2.2版 我在我的项目中遇到了这两个选项的问题,所以我用android studio启动了一个新的空白项目。我附加了我的版本。gradle,我只在下面添加了重新配置“en”,“fr” 定义了2种基本口味 然后我创建了2个字符串。xml文件并翻译了hello\u world默认标签 /src/main/r

  • 我目前正在尝试使用Android Studio为我的大学最后一年项目制作一个DnD字符表应用程序,我在创建布局时遇到了一些问题。我目前正在尝试让TextView将其文本字段作为特定值显示,也就是说,在这种情况下,我希望让它复制EditText组件的值,以便稍后我可以尝试让TextView根据整体统计值显示修改器(即,如果EditText的值为14,则TextView将显示2)。 我的问题是,我不知