【问题标题】:Snackbar and FloatingActionButton bugSnackbar 和 FloatingActionButton 错误
【发布时间】:2015-11-30 13:16:33
【问题描述】:

我在Coordinator Layout 中有一个FAB 按钮,并且我已经设置了在Coordinator Layout 中弹出的小吃店。但是,如果一个小吃店是可见的,并且我执行了一个触发另一个小吃店的操作,而第一个小吃店仍然可见,则 FAB 按钮会出现故障并落在小吃店后面。而不是随着小吃店移动。

我在Relative Layout 中有Coordinator Layout,虽然adviewCoordinator Layout 下方。

这是layout.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer"

android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background">

<RelativeLayout
    android:id="@+id/circle2"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/container2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/adView"
        android:background="#FFF3E0"
        tools:context=".MainActivity"
        android:orientation="vertical">

        <SurfaceView
            android:layout_width="0px"
            android:layout_height="0px"
            android:visibility="gone" />
        <include
            android:id="@+id/circle"
            layout="@layout/periodictablelayout" />


        <include
            android:id="@+id/toolbar_actionbar"
            layout="@layout/toolbar_default"

            android:layout_width="match_parent"
            android:layout_height="wrap_content" />


        <FrameLayout
            android:id="@+id/container"
            android:layout_width="fill_parent"

            android:layout_height="fill_parent"
            android:layout_marginTop="?android:attr/actionBarSize"

            />
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/periodbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:layout_marginEnd="16dp"
            android:elevation="3dp"
            android:onClick="onClick"
            app:layout_anchorGravity="bottom|right|end"
            app:layout_anchor="@+id/container2"
            android:src="@drawable/ic_view_comfy_white_24dp"
            app:backgroundTint="@color/accent"
            android:layout_gravity="bottom|end"
            app:layout_behavior="ibochemistry.titomo.timetoolay.google.com.ibchemistry.ScrollAwareFABBehaviour" />


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

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        ads:adSize="BANNER"
        ads:adUnitId="@string/banner_ad_unit_id"
        app:layout_anchorGravity="bottom" />
</RelativeLayout>
<!-- android:layout_marginTop="?android:attr/actionBarSize"-->
<fragment
    android:id="@+id/fragment_drawer"
    android:name="ibo.NavigationDrawerFragment"
    android:layout_width="@dimen/navigation_drawer_width"
    android:layout_height="wrap_content"
    android:layout_gravity="start"
    android:layout_marginTop="@dimen/abc_action_bar_default_height_material"
    app:layout="@layout/fragment_navigation_drawer"

    tools:layout="@layout/fragment_navigation_drawer" />

【问题讨论】:

  • 运气好吗?我自己也有同样的错误

标签: android android-layout android-fragments android-design-library floating-action-button


【解决方案1】:

如何将FAB 与snackBar 一起向上移动。我想这会解决你的问题。每当显示一个snackBar 时,执行此操作,

SnackbarManager.show(
Snackbar.with(getApplicationContext()) // context
    .text("This will do something when dismissed") // text to display
    .eventListener(new EventListener() {
        @Override
        public void onShow(Snackbar snackbar) {
            myFloatingActionButton.moveUp(snackbar.getHeight());
        }
        @Override
        public void onShown(Snackbar snackbar) {
            Log.i(TAG, String.format("Snackbar shown. Width: %d Height: %d Offset: %d",
                    snackbar.getWidth(), snackbar.getHeight(),
                    snackbar.getOffset()));
        }
        @Override
        public void onDismiss(Snackbar snackbar) {
            myFloatingActionButton.moveDown(snackbar.getHeight());
        }
        @Override
        public void onDismissed(Snackbar snackbar) {
            Log.i(TAG, String.format("Snackbar dismissed. Width: %d Height: %d Offset: %d",
                                snackbar.getWidth(), snackbar.getHeight(),
                                snackbar.getOffset()));
        }
    }) // Snackbar's EventListener
, this); // activity where it is displayed

让我知道它是否适合你...

【讨论】:

  • 这只是独立于小吃店的动画。当小吃店消失时会发生什么?我必须让它恢复原状。当旧设备在动画上出现故障时,这看起来不正确,并且小吃栏与 FAB 重叠或在小吃栏出现之前动画 FAB。
  • 是的,你可以像上面那样把它放在一行中......但是现在你想要动画视图吗?查看我编辑的答案...
【解决方案2】:

使用, 这里查看 - fabView

Snackbar.make(view, "Hello Snackbar", Snackbar.LENGTH_LONG).show();

这将在小吃店上方显示 fab

【讨论】:

    【解决方案3】:

    此问题已在支持库 23.1.0 中修复,只需更新您的依赖项即可修复。

    【讨论】:

      猜你喜欢
      • 2015-08-18
      • 2016-03-12
      • 2015-10-11
      • 2015-12-24
      • 2015-12-25
      • 2016-06-03
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多