翻译动画后更改视图高度?

Posted

技术标签:

【中文标题】翻译动画后更改视图高度?【英文标题】:Change View height after translation animation? 【发布时间】:2021-08-13 17:54:48 【问题描述】:

在我的活动中,我有一个BottomNavigationView 和一个RecyclerView,我想做的是在滚动视图时隐藏BottomNavigationView,我正在使用此代码:

 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() 

            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) 
                super.onScrolled(recyclerView, dx, dy);
                BottomNavigationView navigationView = requireActivity().findViewById(R.id.bottom_navigation_view);

                if (recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_DRAGGING && dy > 0)
                    navigationView.animate()
                            .translationY(navigationView.getHeight());
                
                else if(recyclerView.getScrollState() == RecyclerView.SCROLL_STATE_DRAGGING && dy < 0)
                    navigationView.animate()
                            .translationY(0);
            



        );

这很好用,只是它仍然显示视图的边界,所以在隐藏BottomNavigationView 后,我得到一个空矩形。使视图高度跟随平移的最佳方法是什么?

【问题讨论】:

【参考方案1】:

我看不出你是如何“隐藏”BottomNavigationView

但是如果你使用

BottomNavigationView.setVisibility(View.INVISIBLE);

隐藏视图但保持其宽度和高度。

应该是

BottomNavigationView.setVisibility(View.GONE);

隐藏视图并使宽度 = 0 和高度 = 0

【讨论】:

在代码中有导航视图高度的 Y 平移,它“隐藏”了视图但视图的边界仍然存在,只是一个空白视图

以上是关于翻译动画后更改视图高度?的主要内容,如果未能解决你的问题,请参考以下文章

动画集合视图高度变化(Swift)

在Scroll View的高度动画后,UIScrollView的子视图不响应触摸

动画更改宽度和高度

Objective-C:动画高度约束更改不起作用

动画(缩放和翻译)android画布视图上的图像的一部分

UITableViewCell 自定义类 - 更改子视图高度约束后重新加载单元格高度