1

Я хотел бы создать неаккуратную Snackbar в деятельности, которая содержит DrawerLayout.Поведение занавесок в FrameLayout или CoordinatorLayout с DrawerLayout

Либо я использую FrameLayout, чтобы содержать свою Snackbar, и он появляется поверх навигационногоView, когда я его рисую, или я использую CoordinatorLayout, и он появляется под ним, но он становится способным к удару.

In Google's Component documentation, говорится в том, что закусочная ниже по высоте, чем DrawerLayout.

Я тщетно пытался установить манекен для моего координатораLayout, чтобы он не мог быть проворным, как обсуждалось в this previous post.

Таким образом, как появилась закутка, завернутая в FrameLayout внутри DrawerLayout, появляется над DrawerLayout? и есть ли способ переопределить поведение уклонения в Snackbar в CoordinatorLayout?

ответ

0

Я узнал решение отменить по умолчанию отклонить поведение, установленное на закусочную:

View rootView = findViewById(coordinatorLayoutId); 

//Create Snackbar 
Snackbar snackbar = Snackbar 
      .make(rootView, notificationTextId, Snackbar.LENGTH_INDEFINITE) 
      .setAction(actionTextId, clickListener) 
      .setCallback(new Snackbar.Callback() { 
       @Override 
       public void onShown(Snackbar snackbar) { 
        ViewGroup.LayoutParams rootViewGroupParams = view.getLayoutParams(); 

        if (rootViewGroupParams instanceof CoordinatorLayout.LayoutParams) { 
         final CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) rootViewGroupParams; 
         params.setBehavior(null); 
         view.setLayoutParams(params); 
       } 
      }); 

Поэтому, используя CoordinatorLayout как вид корня получит закусочную под DrawerLayout и переопределение onShown() Метод в Snackbar.Callback позволит переопределить поведение CoordinatorLayout после его показа, тем самым предотвращая его прокрутку.