4

私は単一の断片活性を持っています。フラグメントにはコーディネーターのレイアウトがあり、ファブの直接の子としてのfabと他のビューがあります。スタートアップ時の断片のFab位置が正しくない

活動レイアウト

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

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

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

</LinearLayout> 

フラグメントレイアウト

<android.support.design.widget.CoordinatorLayout 
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" 
android:id="@+id/main_content" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <com.github.aakira.expandablelayout.ExpandableLinearLayout 
     android:id="@+id/statistic_expand_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/toolbar" 
     android:background="@color/colorPrimary" 
     android:orientation="vertical" 
     app:ael_duration="150" 
     app:ael_interpolator="accelerateDecelerate"> 

     <com.github.mikephil.charting.charts.BarChart 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/overall_statistic_bar_chart" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/statistic_small"/> 

     <TextView 
      style="@style/SmallTextTheme" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="@dimen/spacing_small" 
      android:gravity="center" 
      android:text="@string/overall_statistic" 
      android:textColor="@color/colorTextPrimary"/> 

    </com.github.aakira.expandablelayout.ExpandableLinearLayout> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/statistic_expand_layout" 
     android:scrollbars="vertical"/> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/spacing_tiny" 
     android:layout_below="@id/statistic_expand_layout" 
     android:background="@drawable/shadow_updown"/> 

</RelativeLayout> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/activity_main_fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="@dimen/spacing_standard" 
    android:src="@drawable/ic_add" 
    app:layout_anchor="@id/recycler_view" 
    app:layout_anchorGravity="bottom|end"/> 

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

私はこのフラグメント工場の位置での活動を開始すると

fab

が、ときに私はいずれかのボタンやビューを押し間違っていますファブはrの正しい位置に行きますight bottom corner。このレイアウトをアクティビティに直接置くと、常に正しい位置に配置されます。誰でも問題の原因がわかりましたか?

答えて

1

が、私は、任意のボタンまたはビューFabは右下隅で正しい位置 に行く押します。 このレイアウトを直接 アクティビティに配置すると、常に正しい位置になります。

ソリューション:だから今、あなたのデザインにRelativeLayoutがあってはならない

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

    <android.support.v4.widget.NestedScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <!-- Your scrolling content --> 

    </android.support.v4.widget.NestedScrollView> 

    <android.support.design.widget.AppBarLayout 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent"> 

     <android.support.v7.widget.Toolbar 
       ... 
       app:layout_scrollFlags="scroll|enterAlways"/> 

     <android.support.design.widget.TabLayout 
       ... 
       app:layout_scrollFlags="scroll|enterAlways"/> 

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

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

:ここは、彼らがどのように見えるべきかと言うAppBarLayoutCoordinatorLayoutのドキュメントです。 Toolbarを使用しているとき、それはAppBarLayoutだとして、今CoordinatorLayoutRelativeLayoutを想像するのでCoordinatorLayoutAppBarLayoutを使用してみてください、そしてActivityCoordinatorLayout主なレイアウトでを入れてください。

これだけです。もう1つは、AppBarLayoutの下にあなたのビューにapp:layout_behavior="@string/appbar_scrolling_view_behavior"を追加することを忘れないでください。

助けや質問が必要な場合は教えてください。

+0

お返事ありがとうございますが、質問の説明に間違いがありました。私はfragment_containerの場所で**フラグメント**のレイアウトをアクティビティ**に直接入れても、**私はアクティビティレイアウト**としてフラグメントのレイアウトを使用しています。展開時に、展開可能なレイアウトでRecyclerViewを配置するには、このRelativeLayoutが必要です。 –

+0

** Activity Layout **で 'CoordinatorLayout'を使用して、' FloatingActionButton'を正しい場所に置くことができないのはなぜですか?私は 'Toolbar'を' LinearLayout'の中に入れ、 'Toolbar'と' AppBarLayout'を使わずに 'CoordinatorLayout'を使っている部分について、なぜ考えているのですか?このレイアウトデザインが正しいとは思わない! – Mohsen

+1

あなたの権利では、コーディネーターのレイアウトでアクティビティー・レイアウトを書き直しました。ありがとう:) –

関連する問題