EditText:避免关注setText()

时间:2013-10-17 09:39:29

标签: android focus android-edittext

我有一个带有滚动视图的活动,其中包含一些按钮和一个EditText 因此按钮位于EditText组件上方。

通过单击按钮,EditText组件可以使用EditText.setText("foo");

更改其文本值

不幸的是,此调用会将焦点设置为EditText组件,因此ScrollView将滚动到EditText组件(光标闪烁)。

有没有办法避免这种情况?

我试过这样的事情

public void setText(String t){
    editText.setFocusable(false)
    editText.setFocusableInTouchMode(false);
    editText.setText(t);
    editText.setFocusable(true);
    editText.setFocusableInTouchMode(true);
}

但这不起作用,有时setFocusable(true)没有影响,因此EditText不再是“可点击的”。

4 个答案:

答案 0 :(得分:2)

editText.clearFocus();

当此视图想要放弃焦点时调用。

http://developer.android.com/reference/android/view/View.html#clearFocus()

答案 1 :(得分:0)

在您的按钮中使用以下代码

InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 

inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);

请参阅以下链接

android edittext remove focus after clicking a button

答案 2 :(得分:0)

xml

中使用此功能
<EditText
        android:clickable="false" 
        android:cursorVisible="false" 
        android:focusable="false" 
        android:focusableInTouchMode="false">
</EditText>

edittext.setKeyListener(null);

答案 3 :(得分:0)

在您的按钮中使用以下代码......

 InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 

 inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);