2016-09-30 7 views
-2

Wir haben app: layout_behavior = "@ string/appbar_scrolling_view_behavior"; Es ist perfekt für die Werkzeugleiste. Ich erstelle benutzerdefinierte BottomBar und möchte die Bewegungsrichtung umkehren, die dieses Flag verursacht. Gibt es Ideen, wie man es implementiert?AppBar Scrollverhalten

+0

Ihre Frage ziemlich unklar ist .... – PN10

+0

ich die Funktionalität des Verhaltens dieses Flag erweitern möchten und die Richtung umkehren sich um die y-Achse zu bewegen. Zum Beispiel haben wir Recyclerview, Scrollen nach unten, Symbolleiste ausblenden nach oben, unteren Balken zu Bot, scrollen nach oben, alle wieder angezeigt –

+0

überprüfen Sie die Antwort von Mario von diesem. Http://stackoverflow.com/questions/32465548/add-app-bar -scrolling-view-behaviour-to-multiple-views-in-coordinatorlayout .aus dem, was ich von Ihrem Kommentar verstanden habe, benötigen Sie App Scroll-Verhalten für mehrere Ansichten ... nicht wahr? und noch eine Sache, wie man eine Frage formt und stellt SO sollten Sie Ihre Problembeschreibung klar erklären ... Ihr Titel und Körper sollten klarer sein ... – PN10

Antwort

0

Ich fand Lösung!

Wir brauchen CoordinatorLayout.Behavior wie diese

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

Eduard Poida Ihre Lösung funktioniert nicht richtig zu verlängern, wenn man die Orientierung des Telefons ändert, während die untere Navigation versteckt ist. Screenshot

Ich habe eine Zeile Ihrer Lösung modifiziert und es funktioniert besser für mich:

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

Dies liefert keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. Wenn Sie [verdienen] (// meta.stackoverflow.com/q/146472) genug [Reputation] (// stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (// stackoverflow .com/help/privileges/Kommentar). – Machavity

+0

Dies bietet keine Antwort auf die Frage. Sobald Sie genug [Reputation] (https://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (https://stackoverflow.com/help/privileges/comment); Stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (https://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/16911732) – Pehlaj