2016-02-26 5 views
2

Я хотел бы знать, как заставить плавающую панель действий исчезнуть, щелкнув по ней. Действие, которое он выполняет, находится внутри одного и того же фрагмента, поэтому я не могу просто загрузить другое действие или фрагмент, в котором отсутствует FAB. Я пытался использоватьСкрыть плавающую кнопку действия после нажатия на нее

fab.setVisibility(view.GONE); 

в onClickListener:

FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.fab); 
fab.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     writeProfile(); 
     fab.setVisibility(view.GONE); 
    } 
}); 

Но, конечно, вы не можете получить доступ к переменной внутри внутреннего класса.

EDIT: принятый ответ работает, чтобы скрыть FAB, но как тогда я могу скрыть FAB с помощью другого метода?

ответ

2

Это связано с атрибутом app: layout_anchor. Вы должны избавиться от якоря перед изменением видимости:

CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); 
p.setAnchorId(View.NO_ID); 
fab.setLayoutParams(p); 
fab.setVisibility(View.GONE); 
+0

Это работает, если я объявляю окончательный вариант FAB. Теперь, как я могу заставить FAB снова появиться в другом вызове метода за пределами класса FAB? –

+0

Невозможно? ~~~~ –

Смежные вопросы