2016-12-31 4 views
2

Когда я нажимаю EditText, появляется мягкая клавиатура. Я не хочу, чтобы клавиатура появлялась, когда я нажимал EditText, однако я хочу получить силы EditText. Я хочу отредактировать его без клавиатуры.Как я могу сделать мягкую клавиатуру недействительной при фокусировке EditText

editText.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     InputMethodManager imm = (InputMethodManager) 
     getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(view.getWindowToken(), 
     InputMethodManager.HIDE_NOT_ALWAYS); 
    } 
}); 

В этом коде клавиатура не появляется, когда я нажимаю один раз. Но клавиатура появляется, когда я нажимаю много раз подряд.

Как его улучшить? Скажите, пожалуйста, как это сделать. Спасибо.

+0

объяснить, что на самом деле вы хотите, потому что вы можете сделать EditText unclickable, но тогда нет смысла EditText поэтому вместо того, чтобы использовать EditText вы можете использовать TextView. пожалуйста, объясните о своем выходе –

+0

@ user7359831 попробуйте мой ответ :) –

+0

Я хочу использовать свою клавиатуру. Я делаю калькулятор, поэтому мне не нужна клавиатура. – user7359831

ответ

0

Ключ:

onCheckIsTextEditor() Проверьте вызываемый вид представляет собой текстовый редактор, в этом случае было бы целесообразно, чтобы автоматически отображать мягкое окно ввода для него. Это возвращает значение true, если это представление является текстовым редактором. Так что давайте изменим это! Тогда клавиатура не появляется :)

Создайте свой собственный класс

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.EditText; 


public class NoImeEditText extends EditText { 
    public NoImeEditText(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 
    @Override 
    public boolean onCheckIsTextEditor() { 
     return false; 
    } 
} 

установить XML как этот

<your.package.name.NoImeEditText 
     android:textSize="17dp" 
     android:textColor="#FFF" 
     android:id="@+id/edit_query" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" /> 

называют его

editText = (NoImeEditText) findViewById(R.id.edit_query); 

проверки фокусировки

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if(hasFocus){ 
         // show your custom key pad and do your work 
        Toast.makeText(getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show(); 
       }else { 
        Toast.makeText(getApplicationContext(), "lost the focus", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
+0

Спасибо, что ответили. Клавиатура появляется, когда я нажимаю много раз одновременно. – user7359831

+0

@ user7359831 Теперь попробуйте –

+0

Спасибо. Есть некоторые условия. введите несколько букв и нажмите на них. он не работает. С другой стороны, он работает, когда в editText нет букв. – user7359831