手动关闭小吃店时向下移动按钮

Posted

技术标签:

【中文标题】手动关闭小吃店时向下移动按钮【英文标题】:Move Button down when dissmising snackbar manually 【发布时间】:2021-08-03 15:56:02 【问题描述】:

所以我有以下基本代码,可确保在出现快餐栏时我的按钮升起:

public class MoveUpwardBehavior extends CoordinatorLayout.Behavior<View> 
    private static final boolean SNACKBAR_BEHAVIOR_ENABLED;

    @Override
    public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) 
        return SNACKBAR_BEHAVIOR_ENABLED && dependency instanceof Snackbar.SnackbarLayout;
    

    @Override
    public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) 
        float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());
        child.setTranslationY(translationY);
        return true;
    

    static 
        SNACKBAR_BEHAVIOR_ENABLED = Build.VERSION.SDK_INT >= 11;
    

我的自定义线性布局:

public class CustomLinearLayout extends LinearLayout implements CoordinatorLayout.AttachedBehavior 

    MoveUpwardBehavior mb = new MoveUpwardBehavior();
    public CustomLinearLayout(Context context) 
        super(context);
    

    public CustomLinearLayout(Context context, AttributeSet attrs) 
        super(context, attrs);
    

    public CustomLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) 
        super(context, attrs, defStyleAttr);
    

    @NonNull
    @Override
    public CoordinatorLayout.Behavior getBehavior() 
        return mb;
    

最后但并非最不重要的是我的布局:

<?xml version="1.0" encoding="utf-8"?>
 <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_
 android:layout_
 xmlns:app="http://schemas.android.com/apk/res-auto"
 app:layout_behavior=".pkgActivity.MoveUpwardBehaviour"
 tools:context=".pkgTestforend.DriverListFragment">


    <ListView
        android:id="@+id/listAllDrivers"
        android:layout_
        android:layout_ >
    </ListView>


    <com.example.dochjavatestimplementation.pkgTestforend.CustomLinearLayout
        android:layout_
        android:id="@+id/cusLL"
        android:layout_
        >

        <RelativeLayout
            android:layout_
            android:layout_>
            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/btnOpenDriverAddFragment2"
                android:layout_
                android:layout_
                android:src="@drawable/baseline_person_add_24"
                />

        </RelativeLayout>

    </com.example.dochjavatestimplementation.pkgTestforend.CustomLinearLayout>


</androidx.coordinatorlayout.widget.CoordinatorLayout>

这工作得很好,但问题是按钮仍然打开,当手动关闭快餐栏时:

为了解决这个问题,我尝试了以下方法:

Snackbar kd = Snackbar.make(customLinearLayout, "Text to display", Snackbar.LENGTH_LONG)
    .addCallback(new Snackbar.Callback() 

        @Override
        public void onDismissed(Snackbar snackbar, int event) 
            if (event == Snackbar.Callback.DISMISS_EVENT_SWIPE) 
                btnOpenDriverAddFragment2.setTranslationY(90); //lower button down manually!
                                                        
            

            @Override
            public void onShown(Snackbar snackbar) 
            
        );

kd.show();

但是,这不是很好,因为小吃栏似乎仍然可见/按钮被解除的小吃栏覆盖?

为什么会这样,snackbar 基本上保持可见但被忽略了?

【问题讨论】:

【参考方案1】:

btnOpenDriverAddFragment2.setTranslationY(90); 更改为 customLinearLayout.setTranslationY(0); 将解决您的问题。

由于不仅按钮向上移动,而且自定义线性布局也是按钮的父级,因此您只需重置父级的 y 位置。 你只是改变了按钮的y值,但你忘记了线性布局。

【讨论】:

以上是关于手动关闭小吃店时向下移动按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何添加滑块以在视图中向下移动? [关闭]

问题:单击关闭按钮会使下方的移动菜单按钮处于悬停状态

如何沿 y 轴 iphone 向下移动按钮操作

关闭 Snackbar 时,FloatingActionButton 不会出现

UISearchController 搜索栏在出现时向下移动

如何根据 Flutter 中的按钮单击向上和向下移动一个小部件?