У меня есть эта «нижняя панель действий» здесь: https://youtu.be/TPi5jtcs2wE, которая появляется и исчезает с определенными типами веб-страниц (например, статья/не статья). Я установил внешний LinearLayout
с animateLayoutTransition
и сделал другой объект LayoutTransition
, но я хочу, чтобы панель исчезла одновременно с тем, как веб-просмотр регулирует ее высоту. Чтобы быть ясным, панель (relativeLayout) устанавливается на View.GONE
, и webView должен расширяться, чтобы соответствовать родительскому (из-за layout_weight), поскольку полоса пропускается, но она не работает одновременно. Я попытался изменить LayoutTransition.setDuration()
и .setStartDelay()
.LayoutTransition исчезает и меняется в одно и то же время
articleActivity XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:id="@+id/container_article"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="app.morningsignout.com.morningsignoff.ArticleActivity"
tools:ignore="MergeRootFrame"
android:background="@android:color/white"
android:animateLayoutChanges="true">
<app.com.morningsignout.morningsignout.CustomWebView
android:layout_width="match_parent"
android:layout_height="0dp"
android:id="@+id/webView_article"
android:layout_gravity="center"
android:layout_weight="9" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:layout_weight="0"
Конфигурация LayoutTransition:
LinearLayout container = (LinearLayout) findViewById(R.id.container_article);
LayoutTransition customTransition = new LayoutTransition();
customTransition.enableTransitionType(LayoutTransition.CHANGING);
customTransition.disableTransitionType(LayoutTransition.CHANGE_APPEARING);
customTransition.disableTransitionType(LayoutTransition.CHANGE_DISAPPEARING);
customTransition.setAnimator(LayoutTransition.APPEARING, showArticleBar);
customTransition.setAnimator(LayoutTransition.DISAPPEARING, hideArticleBar);
customTransition.setStartDelay(LayoutTransition.APPEARING, 0);
customTransition.setStartDelay(LayoutTransition.DISAPPEARING, 0);
customTransition.setStartDelay(LayoutTransition.CHANGING, 0);
customTransition.setDuration(LayoutTransition.APPEARING, showArticleBar.getDuration());
customTransition.setDuration(LayoutTransition.DISAPPEARING, hideArticleBar.getDuration());
customTransition.setDuration(LayoutTransition.APPEARING, showArticleBar.getDuration());
container.setLayoutTransition(customTransition);
hide_action_bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="translationY"
android:duration="300"
android:valueFrom="0"
android:valueTo="?android:attr/actionBarSize"/>
show_action_bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="translationY"
android:duration="300"
android:valueFrom="?android:attr/actionBarSize"
android:valueTo="0"/>
Я, хотя анимация LayoutTransition.CHANGING
заставит ее работать, но нет. Как я могу получить изменение высоты webView и удаление панели одновременно? Несмотря на установление продолжительности и задержки запуска, он не работает. Я думаю, проблема заключается в том, что CHANGING
должен произойти после View.GONE
из-за необходимости знать высоту после того, как представление ушло. Либо это, либо это не анимация CHANGING
.