Dav*_*vid 10 android android-edittext android-recyclerview
我有一个RecyclerView包含EditText子元素.当选EditText中的屏幕滚动时,我想隐藏软键盘.如何判断EditText屏幕上何时不再显示?是否有一些事件监听器可以附加到EditText元素上来说明?
Har*_*rim 22
实现onTouchListener如下:
yourRecycleView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
小智 5
这对我有用:我用RecyclerView.OnScrollListenerwithPublishRelay来消除事件的抖动。
class RecyclerViewActivity : Activity(){
...
private val scrollableRelay = PublishRelay.create<Unit>()
private val disposable = CompositeDisposable()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
recyclerView.addOnScrollListener(object: RecyclerView.OnScrollListener(){
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
scrollableRelay.accept(Unit)
}
})
scrollableRelay
.debounce(100, TimeUnit.MILLISECONDS)
.subscribe({
if (currentFocus == recyclerView) {
hideKeyboard()
}
})
.addTo(disposable)
}
override fun onDestroy() {
disposable.onDestroy()
}
}
Run Code Online (Sandbox Code Playgroud)
一旦视图从屏幕上滚动,焦点就会上升到 recyclerView。因此,我们可以使用RecyclerView.OnScrollListener.
onScrolled跟踪甚至最轻微的视图滚动。这就是为什么我们需要补充一点debounce,我们不会收到很多事件。
hideKeyboard和addTo是扩展函数:
fun Disposable.addTo(compositeDisposable: CompositeDisposable) {
compositeDisposable.add(this)
}
fun Activity.hideKeyboard() =
currentFocus?.let {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(it.windowToken, 0)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5837 次 |
| 最近记录: |