Отключить NestedScrollView, когда Boolean возвращается false - PullRequest
0 голосов
/ 06 марта 2019

В настоящее время у меня есть CoordinatorLayout с ConstraintLayout и NestedScrollView.NestedScrollView имеет высоту просмотра 50dp, которая является просто заголовком.Я хочу иметь возможность вытащить NestedScrollView, когда устройство подключено, однако, когда оно не подключено, я хочу только видеть обзор и не иметь возможности перетаскивать остальную часть вида.

if(deviceConnected) {
    mBottomSheetText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mBottomSheetBehavior.getState() == BottomSheetBehavior.STATE_COLLAPSED) {
                mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
            } else {
                mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
            }
        }
    });
} else {
        
//Want to prevent it form being draggable

}

1 Ответ

0 голосов
/ 06 марта 2019

Интерфейс DragCallback позволяет выбрать, следует ли управлять прокруткой просмотра одного уровня с помощью прокрутки в AppBarLayout.

Вы можете сделать это, как показано ниже:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() {
    @Override
    public boolean canDrag(@NonNull AppBarLayout appBarLayout) {
        return false;
    }
});

Всегда возвращая false, ваше представление прокрутки больше не будет контролироваться appbarLayout.

Примечание: перед вызовом этого вы должны проверить, что ViewCompat.isLaidOut (appBarLayout), в противном случае params.getBehavior () вернет ноль.

Проверьте эту ссылку .

...