应用

时间:2016-12-13 12:10:06

标签: android localization numberpicker

我的应用支持多种语言。所有语言中的数字选择器都正确显示。 number picker in English and other languages

但是当应用语言被选为印地语时,数字选择器最初不会显示数字,而是在滚动数字选择器时以印地语显示。

Number picker in Hindi when the digits are scrolled

我也尝试过更改类型面,除了印地语之外,它还在使用所有其他语言。谁能让我知道如何防止数字选择器改变印地语的数字?

这是我的自定义数字选择器的类。

public class MyNumberPicker extends NumberPicker{
    public MyNumberPicker(Context context) {
        super(context);
    }

    public MyNumberPicker(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void addView(View child){
        super.addView(child);
        updateView(child);

    }
    public void addView(View child,int index,ViewGroup.LayoutParams params){
        super.addView(child,index,params);
        updateView(child);
    }
    public void addView(View child,ViewGroup.LayoutParams params){
        super.addView(child,params);
        updateView(child);
    }

    private void updateView(View view) {
        if (view instanceof EditText){
            ((EditText)view).setTextSize(20);
            ((EditText)view).setTextColor(getResources().getColor(R.color.Text));
            Typeface tf = Typeface.createFromAsset(getResources().getAssets(), "Raleway-Medium.ttf");
            ((EditText)view).setTypeface(tf);

        }
    }

}

这就是我在活动中使用数字选择器的方式。

MyNumberPicker  np_inhale =(MyNumberPicker) findViewById(R.id.np_inhale);
np_inhale.setMinValue(1);
        np_inhale.setMaxValue(50);
 np_inhale.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                i=newVal;
                h=np_hold.getValue();
                e=np_exhale.getValue();
                hafter= np_holdafter.getValue();
                r=np_rounds.getValue();
            }
        });

我已将此代码用于本地化。

String str_lang = "";
        if (lang_chng == 1) {
            str_lang = "hi";
        } else if(lang_chng == 2) {
            str_lang = "ru";
        } else if(lang_chng == 3) {
            str_lang = "fr";
        }
        else
            str_lang = "en";
        myLocale = new Locale(str_lang);
        Locale.setDefault(myLocale);
        android.content.res.Configuration config = new android.content.res.Configuration();
        config.locale = myLocale;
        getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

感谢!

0 个答案:

没有答案