1

我使用CoordinatorLayout作爲我的根視圖。它包含一個RelativeLayoutFloatingActionButton。當我爲FloatingActionButton設置layout_anchorlayout_anchorGravity時,它並不像我想象的那樣位於RelativeLayout(屏幕上的橙色區域)的邊緣。如何使用CoordinatorLayout正確地固定「浮動操作按鈕」?

我試過這個問題的解決方案How can I add the new "Floating Action Button" between two widgets/layouts但沒有成功。

這裏是我的佈局:

<?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"> 

    <RelativeLayout 
     android:id="@+id/primary_area" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/primary" 
     android:paddingBottom="30dp"> 

     <com.vocabularyminer.android.android.view.view.FloatingEditText 
      android:id="@+id/edittext_package_name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="32dp" 
      android:layout_marginLeft="14dp" 
      android:layout_marginRight="14dp" 
      android:layout_marginTop="16dp" 
      android:hint="Test fab button"/> 

    </RelativeLayout> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="16dp" 
     android:src="@drawable/ic_done_white_24dp" 
     app:elevation="4dp" 
     app:layout_anchor="@id/primary_area" 
     app:layout_anchorGravity="bottom|right|end"/> 

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

結果畫面: Result screen according to the layout file above

我所預期:

enter image description here

+0

你的問題到底是什麼?你想把它放在哪裏? –

+0

我認爲你的代碼是正確的,一旦嘗試使用EditText而不是你自定義的edittext。 –

+1

我已經嘗試過使用EditText編寫代碼,它的功能非常好 –

回答

0

我用來做這個代碼的錨定自己,要在主視圖的addOnLayoutChangeListener添加監聽:

// fabGap is the right margin from the CoordinatorLayout 
// container is your CoordinatorLayout 

final FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.TOP); 
    layoutParams.setMargins(mAppBarLayout.getRight() - (2 * fabSize) - (2 * fabGap), mAppBarLayout.getBottom() - (fabSize/2), 0, fabPadding); 

    mFavoriteActionButton = new FloatingActionButton(getActivity()); 
+0

帶有_CoordinatorLayout_和* app:layout_anchor *的解決方案應該在沒有這些解決方法的情況下運行。我最終成立了,我的問題在哪裏,現在它的工作與我所說的完全一致。 – Seid

0

我發現了什麼是我的問題。對此問題的解決方案:How can I add the new "Floating Action Button" between two widgets/layouts正確。但我把我片段的FrameLayout,這是根據該XML定義:

<FrameLayout 
     android:id="@+id/floating_container" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

而且因爲我用WRAP_CONTENT然後FAB按鈕被放置在內部的RelativeLayout代替位置的上的RelativeLayout的邊緣。

當我也用在layout_heigh參數match_parent然後一切都按預期工作。