2016-09-30 62 views
-2

我们有app:layout_behavior =“@ string/appbar_scrolling_view_behavior”;这对于工具栏来说非常完美。 我创建自定义的BottomBar并且想要反转导致此标志的移动方向。 有没有什么想法如何实现它?AppBar Scrolling Behavior

+0

你的问题是相当不清楚.... – PN10

+0

我想延长这个标志的功能的行为和反转方向沿y轴移动。例如,我们有recyclerview,向下滚动,工具栏隐藏到顶部,底部栏到机器人,向上滚动,全部再次显示 –

+0

从这个Mario检查答案.http://stackoverflow.com/questions/32465548/add-app-bar -scroll-view-behavior-to-multiple-views-in-coordinatorlayout。从我的理解你的评论是你需要应用程序滚动行为的多个意见...是不是?还有一件事是检查如何形成和提出问题,因此你应该清楚地解释你的问题陈述......你的头衔和身体应该更清楚...... – PN10

回答

0

我找到了解决方案!

我们需要这样的

public class BottomBarBehavior<V extends View> extends CoordinatorLayout.Behavior<V> { 

    private int defaultDependencyTop = -1; 

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

    @Override 
    public boolean layoutDependsOn(CoordinatorLayout parent, V child, View dependency) { 
     return dependency instanceof AppBarLayout; 
    } 

    @Override 
    public boolean onDependentViewChanged(CoordinatorLayout parent, V child, View dependency) { 
     if (defaultDependencyTop == -1) { 
      defaultDependencyTop = dependency.getTop(); 
     } 
     child.setTranslationY(-dependency.getTop() + defaultDependencyTop); 
     return true; 
    } 
} 
0

爱德华Poida您的解决方案扩展CoordinatorLayout.Behavior时,而底部的导航是隐藏一个改变电话的方向不能正常工作。 Screenshot

我已经修改您的解决方案的一个行,它为我工作得更好:

public class BottomNavigationBehavior<V extends View> extends CoordinatorLayout.Behavior<V> 
{ 

private int defaultDependencyTop = -1; 

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

@Override 
public boolean layoutDependsOn(CoordinatorLayout parent, V child, View dependency) 
{ 
    return dependency instanceof AppBarLayout; 
} 

@Override 
public boolean onDependentViewChanged(CoordinatorLayout parent, V child, View dependency) 
{ 
    if (defaultDependencyTop == -1) 
    { 
     defaultDependencyTop = dependency.getTop(); 
    } 
    child.setTranslationY(-dependency.getTop()*2); 
    return true; 
} 
} 
+0

这并没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。如果[赚取](// meta.stackoverflow.com/q/146472)足够[声誉](// stackoverflow.com/help/whats-reputation),您将可以[对任何帖子发表评论](// stackoverflow .COM /帮助/权限/评论)。 – Machavity

+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/16911732) – Pehlaj