当我成为焦点时,我正在尝试以编程方式将视图带到我的recyclerview的顶部。
当我使用scrollToPosition方法时,它不会将视图带到视图的顶部。这样,下面的视图将成为焦点。
我尝试使用scrollToPositionWithOffset方法,但由于使用GridLayoutManager而不是LinearLayoutManager而无法使用。
我还尝试过以编程方式手动滚动recyclerview,但是边缘情况过多,看起来很时髦。
private boolean jumpToNext(){
if (mRecyclerView != null){
ArrayList<View> views = new ArrayList<>();
ArrayList<Integer> positions = new ArrayList<>();
for(int i = 0; i < mRecyclerView.getLayoutManager().getItemCount(); i++){
if(mRecyclerView.getLayoutManager().getChildAt(i) != null){
views.add(mRecyclerView.getLayoutManager().getChildAt(i));
positions.add(i);
}
}
for(int i = 0; i < views.size(); i++) {
if (views.get(i).hasFocus()) {
for (int j = i + 1; j < views.size(); j++) {
ArrayList<View> newView = new ArrayList<>();
for(View v : views.get(j).getFocusables(View.FOCUS_RIGHT)){
if(v instanceof EditText){
mRecyclerView.getLayoutManager().scrollToPosition(positions.get(j));
views.get(j).requestFocus();
j = views.size();
i = views.size();
}
}
}
}
}
return true;
}
return false;
}
当一个视图成为焦点时,应将其移至最高位置,以便其下面的其他视图变得可聚焦。