4

私は活動といくつかの断片を持っています。フラグメントの1つにアンカー重力ボトム|右|終端を持つFABが含まれています。それは良いようですが、別のフラグメントを開始してから戻るボタンを押すと、FABが左上隅に表示されます。私はコーディネーターのレイアウトを使用しますが、それは役に立ちません。ここに私のレイアウトは次のとおりです。浮動アクションボタン予想外のアンカー重力変更

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:id="@+id/fragment_main_page"> 

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/main_page_listview" 
    android:layout_marginTop="5dp"> 

</ListView> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_marginTop="3dp"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="12dp" 
     android:src="@drawable/info_main_page" 
     android:layout_gravity="center_vertical"/> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:layout_gravity="center_vertical" 
     android:id="@+id/how_to_use" 
     android:text="@string/how_to_use" 
     android:textAllCaps="false" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textStyle="italic" 
     android:background="@android:color/transparent"/> 

</LinearLayout> 

</LinearLayout> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/floating_promos" 
    android:layout_width="42dp" 
    android:layout_height="42dp" 
    android:layout_margin="16dp" 
    android:clickable="true" 
    android:src="@drawable/floating_promos" 
    app:layout_anchor="@id/fragment_main_page" 
    app:layout_anchorGravity="bottom|right|end" 
    app:backgroundTint="#fb9f12" 
    app:fabSize="mini"/> 
    </android.support.design.widget.CoordinatorLayout> 
+0

なぜrelativeLayoutを使用しないのですか? –

+0

@Abdenaceur Lichihebどのように役立つでしょうか? – fregomene

答えて

1

私は単にリサイクルビューが更新されたかどうかを確認するために、リスナーを追加し、その中のFabに変更を加え、必要に応じて、私はそれを動作させるために小さな微調整をしました。 これがあなたを助けてくれることを願っています。

listWorkData.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { 
    @Override 
    public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { 
     listWorkData.removeOnLayoutChangeListener(this); 

     CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) btnSubmitConfirm.getLayoutParams(); 
     lp.anchorGravity = Gravity.BOTTOM | GravityCompat.END; 
     btnSubmitConfirm.setLayoutParams(lp); 
    } 
}); 

listWorkData.getAdapter().notifyDataSetChanged(); 
+0

私は同じ問題を抱えています、あなたのソリューションは動作します。バグの理由は何ですか? –

+0

@VasilyKabunov私は正しい理由を言うことはできませんが、問題は実行時間に起因すると思います。デフォルトのFABパラメータを引き起こすリサイクラビューよりも早くUIにFABアイコンが表示されているはずです。 –

関連する問題