13

我有一个带有滚动视图的活动,其中包含一些按钮和一个 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

4 回答 4

2
editText.clearFocus();

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

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

于 2016-01-14T13:11:08.037 回答
0

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

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

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

请参考以下链接

android edittext单击按钮后删除焦点

于 2013-10-17T09:45:29.390 回答
0

在你的xml

<EditText
        android:clickable="false" 
        android:cursorVisible="false" 
        android:focusable="false" 
        android:focusableInTouchMode="false">
</EditText>

或者

edittext.setKeyListener(null);
于 2013-10-17T10:12:16.317 回答
0

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

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

 inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
于 2013-10-17T10:30:16.293 回答