0

問題:我已經實現了FloatingActionButton,我遵循了Androidhive的示例。但是,如果顯示SnackBarFloatingActionButton不會向上移動。浮動動作按鈕不能上下移動

問題:如果FloatingActionButton會出現SnackBar會上下移動,我該如何實現?

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout android:id="@+id/maschineCoordinatorLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:fitsSystemWindows="true" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> 

     <include 
      android:id="@+id/toolbar_main" 
      layout="@layout/toolbar"></include> 

    </android.support.design.widget.AppBarLayout> 

    <FrameLayout 
     android:id="@+id/maschinelistcontainer" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior = "@string/appbar_scrolling_view_behavior" 
     /> 

    <com.github.jorgecastilloprz.FABProgressCircle 
     android:id="@+id/fabProgressCircle_download_maschinen" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     > 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/fab_download_maschinen" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      app:borderWidth="0dp" 
      app:elevation="@dimen/fab_elevation" 
      android:layout_margin="@dimen/fab_margin" 
      android:src="@android:drawable/ic_dialog_email" /> 

    </com.github.jorgecastilloprz.FABProgressCircle> 

</android.support.design.widget.CoordinatorLayout> 

回答

0

這裏是FloatingAction行爲類

FloatingActionButtonBehavior.java

public class FloatingActionButtonBehavior extends CoordinatorLayout.Behavior<FloatingActionButton> { 

    public FloatingActionButtonBehavior(Context context, AttributeSet attrs) { 
    } 

    @Override 
    public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) { 
    return dependency instanceof SnackbarLayout; 
    } 

    @Override 
    public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) { 
    float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight()); 
    child.setTranslationY(translationY); 
    return true; 
    } 
} 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     Snackbar.make(view, "Hello Snackbar", Snackbar.LENGTH_LONG).show(); 
     } 
    }); 
    } 
} 

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <com.getbase.floatingactionbutton.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="end|bottom" 
     android:layout_margin="16dp" 
     app:layout_behavior="com.getbase.coordinatorlayoutdemo.FloatingActionButtonBehavior" 
     app:fab_icon="@drawable/ic_done" /> 

</android.support.design.widget.CoordinatorLayout> 

輸出:

enter image description here

有關更多詳情,請這樣的:https://github.com/ggajews/coordinatorlayoutwithfabdemo

+0

我加入您的建議我的代碼。不幸的是,按鈕仍然不想移動。 FABProgressCircle可能是這裏的問題嗎? – jublikon

+0

你是否需要進步? – Ironman

+0

是的,我需要進度指標。是否有可能實施移動行爲? – jublikon

0

我想你沒有實現FABProgressListener接口

如果不是你已經這樣做了。

你應該使用小吃吧象下面這樣:

@Override public void onFABProgressAnimationEnd() { 
    Snackbar.make(fabProgressCircle, R.string.cloud_upload_complete, Snackbar.LENGTH_LONG) 
     .setAction("Action", null) 
     .show(); 
} 

做你的蘆葦this page

+0

你能解釋一下爲什麼需要它嗎?不幸的是即使progres指示器沒有顯示,按鈕也不會移動 – jublikon

+0

我在[this page]裏面(https://github.com/JorgeCastilloPrz/FABProgressCircle)告訴你什麼時候實現FABProgressListener接口,你應該使用類似於示例代碼的零食吧。因爲以下方法調用將在正確的時間發送 –

0

我正在使用com.android.support:design:24.2.0併爲此工作,你需要把你的FAB放在CoordinatorLayout中,我不知道你是否可以像你一樣包裝。 然後在您的FAB寫:

app:layout_anchor="@id/maschinelistcontainer" 
app:layout_anchorGravity="bottom|right|end" 

像這樣:

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab_download_maschinen" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentEnd="true" 
    android:layout_gravity="bottom|end" 
    app:borderWidth="0dp" 
    app:elevation="@dimen/fab_elevation" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@android:drawable/ic_dialog_email" 
    app:layout_anchor="@id/maschinelistcontainer" 
    app:layout_anchorGravity="bottom|right|end"  /> 

有關詳細信息:https://code.google.com/p/android/issues/detail?id=220250