2015-11-26 3 views
1

Код ниже производит EditText, но после того, как появится только мягкая клавиатура с цифрами, ввод не распознается. Если я изменю setInputType на TYPE_CLASS_TEXT, он будет работать в самый раз. Я прочитал и перечитал все существующие сообщения об этом, но я не вижу, где он отказывается принять ввод.EditText TYPE_CLASS_NUMBER не принимает ввод

// And a zip code 
     zip = Util.buildOneLine("ZIP"); 
     zip.setInputType(InputType.TYPE_CLASS_NUMBER); 
     zip.addTextChangedListener(new TextWatcher() 
     { 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) 
      { 
       Log.w(TAG, "jkljl"); 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
              int after) 
      { 
       Log.w(TAG, "jkljl"); 
      } 

      @Override 
      public void afterTextChanged(Editable s) 
      { 
       Log.w(TAG, "jkljl"); 
      } 
     }); 

public static EditText buildOneLine(String heading) 
{ 

    EditText bottomT = new EditText(this); 
    bottomT.setTextSize(TypedValue.COMPLEX_UNIT_PX, adjustedFont(14)); 
    bottomT.setHint(heading); 
    temp.setSingleLine(true); 
    bottomT.setGravity(Gravity.CENTER_VERTICAL); 
    setLayout(bottomT); 


    return temp; 
} 

ответ

0

EditText плохо себя ведет, потому что в моем обычае ViewGroup я имел

protected void onLayout(boolean changed, int l, int t, int r, int b) 
{ 
.... 
    child.layout(child.getLeft(), child.getTop(), 
        child.getLeft() + child.getMeasuredWidth(), 
        child.getTop() + child.getMeasuredHeight()); 

    child.setRight(somevalue); // CAUSES EDITTEXT PROBLEMS 
    child.setBottom(somevalue); // CAUSES EDITTEXT PROBLEMS 

теперь, когда я не могу setRight (Это понятно) и setBottom(), но также ясно, что EditText не должен становиться странным.

Игнорировать обратный ключ.

Случайно игнорируйте цифровые клавиши, но принимайте десятичную точку.

Игнорируйте строки (Enter) ключ

Какие ключи игнорируются, или нет, зависит от устройства. Samsung Tab 4 или эмулятор Nexus 5 API 23 X86 - хорошие места, чтобы это увидеть.

0

Ну попробуйте это:

zip.setRawInputType(InputType.TYPE_CLASS_NUMBER |InputType.TYPE_NUMBER_FLAG_DECIMAL); 
+0

Спасибо, что посмотрели. Я должен был упомянуть, что я уже пробовал setRawInputType (......). Нет разницы. –

+0

обновил мой ответ – johnrao07

+0

Johnrao07: Я ценю, что вы помогаете мне найти проблему. InputType.TYPE_NUMBER_FLAG_DECIMAL также имеет странные результаты. Он вызывает цифровую клавиатуру, которая также имеет арифметические символы. Поэтому я могу нажать ./*+, и они будут введены. Но если я нажимаю любой из чисел, они полностью игнорируются. –

Смежные вопросы