EditText inputType&阿拉伯文化中的数字格式

时间:2015-02-03 06:42:29

标签: c# android xamarin.android

我们有一个使用英语(美国)文化的应用程序,现在我们正在尝试支持阿拉伯语语言环境。

  1. 我们在应用程序中使用Edittext inputType作为numberDecimal。但它打开键盘与英文数字而不是阿拉伯数字键盘。如何在代码后面以编程方式配置它?

    注意:将Edittext inputType设置为" textMultiLine" ,它默认打开阿拉伯语键盘。但是当为EditText设置numberDecimal时,它会打开US Culture number键盘。

  2. 如何在键入编辑文本时使用键盘将数字格式分隔符点(&#39;。&#39;)更改为逗号(&#39;,&#39;)为阿拉伯语区域设置?< / p>

  3. 注意:我们的设备支持阿拉伯语区域设置。

2 个答案:

答案 0 :(得分:0)

1)你不能。键盘是一个单独的应用程序,它只能决定显示什么。如果它不支持阿拉伯数字,那么它将不会显示它们。我不知道是否有任何一个主要的键盘实际上支持这一点,2年前当我在一个键盘上工作时,没有人能够支持它。

2)您可以从DecimalFormatSymbols http://developer.android.com/reference/java/text/DecimalFormatSymbols.html获取系统对语言环境的了解。如果手机没有安装阿拉伯语语言环境,则可能没有正确的值。在这种情况下,您必须使用它或在所有数字上滚动自己的格式。

答案 1 :(得分:0)

要使用阿拉伯数字和阿拉伯字体,请尝试使用TypeFace。 首先复制阿拉伯语.TTF字体,其中包含阿拉伯数字到&#34; assets / fonts&#34;

然后在您的活动中设置阿拉伯语字体

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Typeface tf= Typeface.createFromAsset(getAssets(), "fonts/FONT.TTF");
    EditText et = (EditText)findViewById(R.id.edittext);
    et.setTypeface(tf);
    }

对于小数点分隔符

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

     Typeface tf= Typeface.createFromAsset(getAssets(), "fonts/FONT.TTF");
     EditText et = (EditText)findViewById(R.id.edittext);
     et.setTypeface(tf);
     et.addTextChangedListener(new TextWatcher() {

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void beforeTextChanged(CharSequence s, int start, int count,
                        int after) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void afterTextChanged(Editable s) {
                    double dbl = 0;
                    String txt;
                    if (s != null) {
                        try {
                            dbl = Double.parseDouble(s.toString().replace(',', '.'));
                        } catch (NumberFormatException e) {
                            //Error
                        }
                        txt = String.valueOf(dbl);
                        et.setText(txt, TextView.BufferType.EDITABLE);
                    }

                }
            });
}

并添加

android:inputType="numberDecimal"
android:digits="0123456789.,"

到您的EditText布局