【问题标题】:Floating action button layout anchor not working浮动操作按钮布局锚不起作用
【发布时间】:2018-01-01 19:02:53
【问题描述】:

我想在我的两个相对布局之间添加一个浮动操作按钮。

为此,我将父布局作为协调器布局,并将锚点和锚点重力指定为 fab 按钮。

但它没有设置在我想要的位置。

我希望它设置在最后的相对布局6的右角,以及在相对布局6和右角的相对布局3之间。

<?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"
    android:background="@color/bg"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <RelativeLayout
                android:id="@+id/relativeLayoutParent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/imageView5"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:layout_marginEnd="30dp"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:layout_marginStart="30dp"
                android:layout_marginTop="30dp"
                android:background="@color/colorAccent">

                <RelativeLayout
                    android:id="@+id/relativeLayout6"
                    android:layout_width="match_parent"
                    android:layout_height="240dp"
                    android:layout_centerHorizontal="true">

                    <ImageView
                        android:id="@+id/imageView7"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:layout_alignParentTop="true"
                        android:scaleType="fitXY"
                        app:srcCompat="@drawable/profile_img" />

                    </LinearLayout>

                </RelativeLayout>


                <RelativeLayout
                    android:id="@+id/relativeLayout3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentStart="true"
                    android:layout_below="@+id/relativeLayout6">


            </RelativeLayout>


            <android.support.design.widget.FloatingActionButton
                android:id="@+id/fab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:layout_anchorGravity="center"
                app:layout_anchor = "@id/linearLayout"
                android:layout_margin="@dimen/fab_margin"
                app:srcCompat="@android:drawable/ic_dialog_email" />
        </LinearLayout>

    </ScrollView>


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

请帮忙..谢谢。

【问题讨论】:

    标签: java android floating-action-button layout-anchor


    【解决方案1】:

    FloatingActionButton 放入CoordinatorLayoutanchor 属性仅适用于 CoordinatorLayout
    还有一件事:你的布局很乱。请安排一下。

    <?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"
    android:background="@color/bg"
    android:orientation="vertical">
    
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
    
            <RelativeLayout
                android:id="@+id/relativeLayoutParent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/imageView5"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:layout_marginEnd="30dp"
                android:layout_marginLeft="30dp"
                android:layout_marginRight="30dp"
                android:layout_marginStart="30dp"
                android:layout_marginTop="30dp"
                android:background="@color/colorAccent" />
    
            <RelativeLayout
                android:id="@+id/relativeLayout6"
                android:layout_width="match_parent"
                android:layout_height="240dp"
                android:layout_centerHorizontal="true" />
    
            <ImageView
                android:id="@+id/imageView7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:scaleType="fitXY"
                app:srcCompat="@drawable/profile_img" />
    
        </LinearLayout>
    
    
        <RelativeLayout
            android:id="@+id/relativeLayout3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/relativeLayout6" />
    </ScrollView>
    
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/fab_margin"
        app:layout_anchor="@id/linearLayout"
        app:layout_anchorGravity="center"
        app:srcCompat="@android:drawable/ic_dialog_email" />
    

    【讨论】:

    • 谢谢你..它的工作..我怎样才能添加右边距晶圆厂? @PhátPhát
    • 你已经为它添加了边距 android:layout_margin="@dimen/fab_margin"
    • 将属性android:layout_marginRight="16dp" 添加到工厂
    • 如果你想只添加 righ_margin,去掉这个 android:layout_margin="@dimen/fab_margin" -> 只改成 margin_right
    【解决方案2】:

    打开和关闭标签中的错误太多。

    • 就在 Imageview 之前,有一个 RelativeLayput,但您将其关闭为线性布局...修复此问题
    • 在滚动视图之后将 RelaLayout 修复为 RelativeLayout
    • 线性布局的结束标签错误
    • 打开两个相对布局,只有一个是关闭的。

    此外,要记住 Scrollview 的关键是只能承载一个直接子级。

    我已经删除了您的所有错误,但由于 Scrollview 只能有一个孩子,因此它无法按您希望的方式工作。请尝试修复此问题。 尝试使用指南进行约束布局。你会发现它是一种更好的锚定方式。

    <?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"
        android:background="@color/bg"
        android:orientation="vertical">
    
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fillViewport="true">
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
    
                <RelativeLayout
                    android:id="@+id/relativeLayoutParent"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_above="@+id/imageView5"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:layout_marginEnd="30dp"
                    android:layout_marginLeft="30dp"
                    android:layout_marginRight="30dp"
                    android:layout_marginStart="30dp"
                    android:layout_marginTop="30dp"
                    android:background="@color/colorAccent">
    
                <RelativeLayout
                    android:id="@+id/relativeLayout6"
                    android:layout_width="match_parent"
                    android:layout_height="240dp"
                    android:layout_centerHorizontal="true">
    
                      <ImageView
                    android:id="@+id/imageView7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:scaleType="fitXY"
                          app:srcCompat="@drawable/profile_img"
                     />
    
                 </RelativeLayout>
    
             </RelativeLayout>
            </RelativeLayout>
    
            <RelativeLayout
            android:id="@+id/relativeLayout3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentStart="true"
            android:layout_below="@+id/relativeLayout6">
    
    
        </RelativeLayout>
    
    
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_anchorGravity="center"
            app:layout_anchor = "@id/linearLayout"
            android:layout_margin="@dimen/fab_margin"
            app:srcCompat="@android:drawable/ic_dialog_email" />
    
    
        </ScrollView>
    
    
        </android.support.design.widget.CoordinatorLayout>
    

    【讨论】:

      【解决方案3】:

      试试这个希望它对你有用...

      <?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"
          android:background="@color/grey_200"
          android:orientation="vertical">
      
              <android.support.design.widget.AppBarLayout
                  android:id="@+id/appbar"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:fitsSystemWindows="true"
                  android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
      
              <android.support.design.widget.CollapsingToolbarLayout
                  android:id="@+id/collapsing_toolbar"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:fitsSystemWindows="true"
                  app:contentScrim="?attr/colorPrimary"
                  app:layout_scrollFlags="scroll|exitUntilCollapsed">
      
              <RelativeLayout
                  android:id="@+id/relativeLayout6"
                  android:layout_width="match_parent"
                  android:layout_height="240dp"
                  android:layout_centerHorizontal="true">
      
              <ImageView
                  android:id="@+id/imageView7"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_alignParentLeft="true"
                  android:layout_alignParentStart="true"
                  android:layout_alignParentTop="true"
                  android:scaleType="fitXY"
                  app:srcCompat="@drawable/image" />
      
                  </RelativeLayout>
      
              </android.support.design.widget.CollapsingToolbarLayout>
      
              </android.support.design.widget.AppBarLayout>
      
              <android.support.design.widget.FloatingActionButton
                  android:id="@+id/fab"
                  android:layout_width="60dp"
                  android:layout_height="60dp"
                  app:layout_anchorGravity="bottom|right|end"
                  app:layout_anchor="@+id/appbar"
                  android:layout_margin="10dp"
                  android:layout_alignParentRight="true"
                  android:layout_alignParentEnd="true"
                  app:srcCompat="@android:drawable/ic_dialog_email" />
      
      
      <android.support.v4.widget.NestedScrollView
          android:id="@+id/scrollView"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:clipToPadding="false"
          android:background="@android:color/white"
          app:layout_behavior="@string/appbar_scrolling_view_behavior">
      
          <RelativeLayout
              android:id="@+id/relativeLayout3"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignParentEnd="true"
              android:layout_alignParentLeft="true"
              android:layout_alignParentRight="true"
              android:layout_alignParentStart="true">
      
              <TextView
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" 
                  android:text="Hello world"/>
      
          </RelativeLayout>
      </android.support.v4.widget.NestedScrollView>
      
      
      </android.support.design.widget.CoordinatorLayout>
      

      【讨论】:

        猜你喜欢
        • 2017-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-03
        • 2019-09-04
        • 1970-01-01
        相关资源
        最近更新 更多