0

У меня есть приложение для конвертера Android, я добавляю к нему больше языков, поскольку он изначально был на английском языке. Я разработал свою собственную мягкую клавиатуру для использования в приложении и отключил стандартную мягкую клавиатуру. мягкая клавиатура использует кнопки и прослушиватели onclick, чтобы нанести текст непосредственно на edittext.Как ограничить ввод locale en-US

вот несколько кодов для моих кнопок. количество и количество2 являются edittexts

b2.setOnClickListener(new View.OnClickListener(){ 
       public void onClick(View v){ 
        myVib.vibrate(25); 
        if(getCurrentFocus()==amount){ 
         amount.append("2"); 
        } 
        if(getCurrentFocus()==amount2){ 
         amount2.append("2"); 
        } 
       } 
      }); 
      b3.setOnClickListener(new View.OnClickListener(){ 
       public void onClick(View v){ 
        myVib.vibrate(25); 
        if(getCurrentFocus()==amount){ 
         amount.append("3"); 
        } 
        if(getCurrentFocus()==amount2){ 
         amount2.append("3"); 
        } 
       } 
      }); 

все было хорошо, пока я не добавил некоторые локали, такие как арабский и африкаанс, когда я использую арабский локаль, нажав на кнопку, которая вводит 1 на английском языке вводит арабский символ/номер для 1, это приводит к сбоям, поскольку его нельзя разобрать на число для расчета, а также на африкаанс "." не работает,

Что вы спрашиваете, есть ли способ заблокировать все входные данные строго английским, но при этом поддерживать другие локали для таких вещей, как ресурсы.?

ответ

1

Ну это, похоже, работает. Вставив этот код в OnCreate метода

Locale locale = new Locale("en"); 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 

Он устанавливает «внутреннюю» разработку приложения на английский язык, и весь мой ввод на английском языке. Но лучше всего то, что он поддерживает и использует локаль пользователя для строк, а что нет.