gpt4 book ai didi

android - 如何像 float 按钮一样在 Snackbar 上方移动 View

转载 作者:IT王子 更新时间:2023-10-29 00:01:04 24 4
gpt4 key购买 nike

当出现 Snackbar 时,我想要向上移动一个线性布局。

我看到了很多使用 float 按钮的示例,但是常规 View 呢?

最佳答案

我将详细说明批准的答案,因为我认为有一个比那篇文章提供的更简单的实现。

我无法找到处理通用 View 移动的内置行为,但这是一个很好的通用选项(来自 http://alisonhuang-blog.logdown.com/posts/290009-design-support-library-coordinator-layout-and-behavior 链接在另一条评论中):

import android.content.Context;
import android.support.annotation.Keep;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.support.v4.view.ViewCompat;
import android.util.AttributeSet;
import android.view.View;

@Keep
public class MoveUpwardBehavior extends CoordinatorLayout.Behavior<View> {

public MoveUpwardBehavior() {
super();
}

public MoveUpwardBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}

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

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

//you need this when you swipe the snackbar(thanx to ubuntudroid's comment)
@Override
public void onDependentViewRemoved(CoordinatorLayout parent, View child, View dependency) {
ViewCompat.animate(child).translationY(0).start();
}
}

然后,在你的布局文件中添加一个 layout_behavior 如下:

<LinearLayout
android:id="@+id/main_content"
android:orientation="vertical"
app:layout_behavior="com.example.MoveUpwardBehavior"/>

其中 layout_behavior 是自定义行为的完整路径。除非您特别需要默认行为,否则无需继承 LinearLayout,这似乎并不常见。

关于android - 如何像 float 按钮一样在 Snackbar 上方移动 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33217241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com