1、获取滑动菜单栏中的头部导航栏中控件问题
②获取头部导航栏里面控件的时候不能直接通过findviewById(),这样得到的控件为空对象,也不能通过inflater获取父布局然后再来获取子控件的方式来获取控件的实例,需要通过
activityMainBinding.navigationView.getHeaderView(0).findViewById(R.id.nav_temp);
先得到滑动菜单栏实例,然后再得到头部布局文件,再来获取头部布局文件的控件实例
2、RecyclerView中item设置了点击事件后,RecyclerView再设置onTouch触摸事件,item部分的触摸事件失效问题
不要使用根布局的onTouchEventListener,改用addOnItemTouchListener,它能够在点击item的时候拦截掉这个点击事件
imageTotalFragmentBinding.recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
float newDist;
int multiple;
@Override
public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
GridLayoutManager gridLayoutManager = (GridLayoutManager) rv.getLayoutManager();
try {
if (e.getAction() == MotionEvent.ACTION_MOVE) {
newDist = ShareUtil.spacing(e);
Log.d(TAG, "onTouch: -----------------------newDist:" + newDist);
multiple = (int) (newDist * (-0.022f)) + 21;
Log.d(TAG, "onTouch: ----------------------取余运算:" + multiple);
if (multiple >= 3 && multiple <= 12 && gridLayoutManager!= null) {
gridLayoutManager.setSpanCount(multiple);
}
}
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
}
return false;
}
@Override
public void onTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
});