2016-12-31 125 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无法点击,但再有没有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

相关问题