尽管重力设置,Android浮动动作按钮位置错误

时间:2017-05-12 19:49:05

标签: android android-framelayout floating-action-button layout-gravity

我目前面临两个不同的问题,都是关于晶圆厂引力行为。

在我的布局中,我有一个由FrameLayout组成的部分,其中包含ImageViewFloatingActionButton作为子视图。

`<RelativeLayout ...>

    *Here's a toolbar*

    <ScrollView ...>

        <LinearLayout ...>

            <FrameLayout
                android:id="@+id/prof_img"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="@dimen/activity_vertical_margin">

                <de.hdodenhof.circleimageview.CircleImageView
                    android:id="@+id/profile_image"
                    android:layout_width="@dimen/size_editing_pic"
                    android:layout_height="@dimen/size_editing_pic"
                    android:src="@drawable/ic_profilo_utente"/>

                <android.support.design.widget.FloatingActionButton
                    android:id="@+id/floating_btn"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="bottom|end"
                    android:scaleType="center"
                    android:tint="@color/dark_gray"
                    app:layout_anchor="@id/profile_image"
                    app:layout_anchorGravity="bottom|end|right"
                    app:srcCompat="@drawable/ic_camera"
                    app:backgroundTint="@color/colorAccentEasy"
                    app:fabSize="mini"/>
            </FrameLayout>

            *Other sections*

        </LinearLayout>
    </ScrollView>
</RelativeLayout>`
  • 问题1:Android版&gt; = Lollipop

FAB是正确的,但你可以看到它的阴影被明显切割而没有假想的褪色。

Post-Lollipop behavior

  • 问题2:Android版本&lt;棒棒糖

FAB不是它应该的地方。

Pre-Lollipop behavior

我尝试了一些我想到的东西,我在网上发现了这里。 据我所知,它与核心代码所做的不同填充管理有关,如果操作系统是在Lollipop之前或之后,并且属性useCompatPadding(我尝试了不同的组合),但我可以&#39;弄清楚如何成功解决它。

更新

感谢我的建议,我设法解决了问题#1。

就问题#2而言,我仍然无法解决问题。 在我的新fabStyle-v21中,layout_margins为5dp,因为它非常适合我的需求。 然后我尝试在默认样式中添加0dp边距,但仍然没有,甚至尝试负边距。

1 个答案:

答案 0 :(得分:1)

问题1 - 如果您想查看elevation等视图的FAB, Button(阴影),则必须在它们周围留出空间。例如,您可以设置边距。如果FAB与父布局边缘之间没有空格

,则使用填充到FAB的父布局将不起作用

问题2 - 浮动操作按钮在Lollipop设备之前具有不同的边距和填充值。您可以为不同的api级别使用不同的styles.xml文件。

不同文件夹的styles.xml:

<强>值-V21

<style name="fabStyle">
    <item name="android:layout_margin">16dp</item>
</style>

(默认)

<style name="fabStyle">
    <item name="android:layout_marginLeft">0dp</item>
    <item name="android:layout_marginTop">0dp</item>
    <item name="android:layout_marginRight">8dp</item>
    <item name="android:layout_marginBottom">0dp</item>
</style>

<强>用法:

<android.support.design.widget.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/fabStyle"
    app:useCompatPadding="true"
    app:elevation="6dp"/>

更新:尝试将app:useCompatPadding="true"添加到您的FAB而不更改其他安排。