2017-12-02 98 views
1

我有一个应用程序,它将meters转换为centimeters,简单,对不对?禁用多个edittexts键盘

所以我有两个部分。一个是键盘,另一个是两个edittext盒子。

我正在使用我自己的键盘,所以没有安卓键盘显示的感觉。

我看了各种答案,他们似乎并没有为我工作。

This问题问同样的事情,我实现了选定的答案,但edittexts行为怪异。

enter image description here

首先一个似乎工作,因为我想它的工作,但不知其他文本不会来的焦点。

我尝试点击它并没有任何反应。重点不会从第一个开始。

我试图

findViewById(R.id.lengthConverterSecond).setOnTouchListener(this); 
    findViewById(R.id.lengthConverterFirst).setOnTouchListener(this); 
@Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     return true; 
    } 

什么了这个怪异的行为?

什么是解决我的上述问题?

更新

试过这种tooo。

万一

findViewById(R.id.lengthConverterSecond).setOnFocusChangeListener(this);   findViewById(R.id.lengthConverterFirst).setOnFocusChangeListener(this); 
    @Override 
     public void onFocusChange(View view, boolean b) { 
      if(b){ 
       InputMethodManager im=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       assert im != null; 
       im.hideSoftInputFromWindow(view.getWindowToken(),0); 
      } 
     } 

这并不在所有的工作,就像它不会隐藏键盘但怪异的行为我上面看到,现在不发生。

回答

3

为minSdk = 8,maxSdk = 23

<EditText 
    android:id="@+id/editText" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:focusableInTouchMode="false"/> 

的API 21或者如果你有两个编辑文本(假设editText1和editText2)> 21

,并要使用自己的自定义键盘然后使用此解决方案。

EditText editText1 = findViewById(R.id.editText1); 
EditText editText2 = findViewById(R.id.editText2); 

editText1.setShowSoftInputOnFocus(false); // add this if you dont want default keyboard when you tap on editText1. 

editText2.setShowSoftInputOnFocus(false);// add this if you dont want default keyboard when you tap on editText2. 

这里

+0

以下API级21不会工作,我的是16(分钟) –

+0

加入用于minSdk = 8和maxSdk = 23太勾选更新的代码 – Thunder

+0

'公共布尔onTouch(查看图,MotionEvent motionEvent ){ switch(view.getId()){case} R.id.lengthConverterFirst:{ view.requestFocus(); } case R.id.lengthConverterSecond:{ view.requestFocus(); } } return true; } –