我在我的应用程序中使用recylerview,每当有新元素添加到recylerview时,它都会滚动到最后一个元素,方法是使用
recyclerView.scrollToPosition(adapter.getCount());
但是,每当键盘打开时(由于editTextView),它会调整视图大小,循环视图变小,但无法滚动到最后一个元素。
android:windowSoftInputMode="adjustResize"
我甚至尝试使用下面的代码来滚动到最后一个元素,但它不起作用
editTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
recyclerView.scrollToPosition(chatAdapter.getItemCount());
}
}
});
我可以尝试adjustPan
向上移动平移,但它隐藏了我的工具栏。请建议任何解决此问题的方法。
发布于 2015-12-05 17:22:55
您可以使用recyclerview.addOnLayoutChangeListener()
捕获键盘向上的更改。如果bottom小于oldBottom
,则键盘处于up状态。
if ( bottom < oldBottom) {
recyclerview.postDelayed(new Runnable() {
@Override
public void run() {
recyclerview.smoothScrollToPosition(bottomPosition);
}
}, 100);
}
发布于 2016-08-22 18:21:26
添加以下您的活动或片段:
if (Build.VERSION.SDK_INT >= 11) {
recyclerView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v,
int left, int top, int right, int bottom,
int oldLeft, int oldTop, int oldRight, int oldBottom) {
if (bottom < oldBottom) {
recyclerView.postDelayed(new Runnable() {
@Override
public void run() {
recyclerView.smoothScrollToPosition(
recyclerView.getAdapter().getItemCount() - 1);
}
}, 100);
}
}
});
}
发布于 2017-02-14 18:33:39
对我来说很管用
LinearLayoutManager layoutManager = new LinearLayoutManager(context);
layoutManager.setStackFromEnd(true);
recyclerView.setLayoutManager(layoutManager);
https://stackoverflow.com/questions/34102741
复制相似问题