13

Я пытаюсь анимировать android.support.design.widget.FloatingActionButton, который прикреплен к моему AppBarLayout. Я могу настроить его в макете xml, и он отображается хорошо. Однако я делаю переход с разделяемым элементом в этот макет, и FAB показывается до того, как будет установлено представление. Я попытался установить видимость GONE и INVISIBLE, но они, похоже, игнорируются, если layout_anchor установлен в макет xml. Во всяком случае, вокруг?Установить layout_anchor во время выполнения на FloatingActionButton

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

ответ

29

Если у вас есть FAB с атрибутом app:layout_anchor, и вы хотите установить видимость вы должны использовать что-то вроде этого:

CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); 
params.setAnchorId(View.NO_ID); 
fab.setLayoutParams(params); 
fab.setVisibility(View.GONE); 

Если вы хотите установить app:layout_anchor динамически вы можете использовать один и тот же код :

CoordinatorLayout.LayoutParams p = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); 
p.setAnchorId(xxxx); 
fab.setLayoutParams(p); 
+0

Это выглядит очень многообещающим. Как насчет установки layout_anchorGravity таким образом? – Bignadad

+0

Я могу оставить layout_anchorGravity в макете xml и просто установить идентификатор якоря, как вы сказали выше. Отлично! Спасибо – Bignadad

+0

Это работает для динамической установки якоря, однако он не решает проблему упомянутого перехода с общим элементом [в этом вопросе] (https://stackoverflow.com/questions/31804170/android-shared-element-transition-between- две деятельности, делает-не-работа). Установка якоря - это то, что, кажется, оборвало анимацию. Без установки каких-либо привязок анимация, похоже, работает нормально. –

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