當使用CoordinatorLayout.Behavior和FloatingActionButton時,發生了一些奇怪的事情。FloatingActionButton和奇怪行爲
這裏是一個片段:
public class BottomFloatingActionButtonBehavior extends CoordinatorLayout.Behavior<FloatingActionButton> {
public BottomFloatingActionButtonBehavior() {
}
public BottomFloatingActionButtonBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
return (dependency instanceof BottomNavigation);
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
if (dependency instanceof BottomNavigation) {
BottomNavigation bottomNavigation = (BottomNavigation) dependency;
int height = bottomNavigation.getNavigationHeight() - bottomNavigation.getBottomInset();
float offset = bottomNavigation.getTranslationY() - height;
child.setTranslationY(offset);
return true;
}
return false;
}
}
然後,隱藏按鈕,並再次示出當邊緣(片段之間導航)增加,但只有一次(每次迭代後不增加):
這是我的佈局:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".Activities.MainActivity">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/layout_coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_main"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/frame_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<it.sephiroth.android.library.bottomnavigation.BottomNavigation
android:id="@+id/navigation_bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:layout_behavior="@string/bbn_appbar_behavior"
app:bbn_entries="@menu/activity_main_navigation" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/button_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
app:borderWidth="0dp"
app:fabSize="normal"
app:layout_behavior="it.sephiroth.android.library.bottomnavigation.BottomFloatingActionButtonBehavior"
app:srcCompat="@drawable/ic_fa_plus_white_24dp"
app:useCompatPadding="true"/>
</android.support.design.widget.CoordinatorLayout>
</layout>
我在做什麼錯?這是什麼行爲? 最有趣的是,如果我改變我的超級類FloatingActionButton.Behavior那麼所有的利潤甚至開關片段(顯示/隱藏序列)走了之後:
但是這個類本身控制小吃吧所以它贏得了」爲我工作。
這是使用最新的(以前也是)支持lib:25.2.0在Nougat和KitKat版本上測試的。不同之處在於 - 在KitKat上不存在「第二個轉變階段」。利潤從一開始就顯現出來。
您是否嘗試將'app:useCompatPadding =「false」'? – nikis
你是否真的需要這種簡單情況下的行爲?爲什麼不使用這些2的垂直線性佈局,並在常規佈局階段完成所有工作? – nikis
謝謝。它對牛軋糖有幫助,但對KitKat沒有幫助。也許有其他建議嗎? –