我的应用支持多种语言。所有语言中的数字选择器都正确显示。 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());
感谢!