2015-10-16 10 views
7

Ich habe einen Viewpager, der in einem Coordinator-Layout platziert ist. In einem bestimmten Fragment eines Viewpagers habe ich eine Recycler-Ansicht und eine Ansicht am unteren Rand des Fragments. Das Problem ist, dass anfangs die Ansicht des Fragments verborgen ist und nur sichtbar ist, wenn ich nach oben scrolle. Ich möchte, dass die Ansicht unten auf dem Bildschirm angezeigt wird.Stick-Ansicht am unteren Rand des Fragments eines Viewpagers im Coordinator-Layout

Dateiname: activity_main.xml

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     style="@style/ToolBarStyle" 
     android:layout_width="match_parent" 
     android:layout_height="?actionBarSize" 
     android:layout_alignParentTop="true" 
     android:background="@color/toolbarColor" 
     android:contentInsetEnd="16dp" 
     android:contentInsetRight="16dp" 
     android:minHeight="?actionBarSize" 
     android:paddingBottom="0dp" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 
</android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="com.dekorate.android.Utils.AppBarLayoutBehavior" /> 
</android.support.design.widget.CoordinatorLayout> 
+0

Haben Sie eine Lösung für Ihr Problem gefunden? Die einzige Sache, die ich denke, würde funktionieren, die verankerte Ansicht aus dem Fragment und in das CoordinatorLayout zu verschieben, aber das ist keine praktikable Lösung für mich – darnmason

+1

@darnmason Implementieren Sie den AppBarLayout.OnOffsetChangedListener in der Aktivität. In der onOffsetChanged-Methode passen Sie den Rand der Ansicht unten entsprechend der aktuell gescrollten Höhe an. – arkit

+0

Prost, scheint gut genug zu arbeiten! – darnmason

Antwort

0

Umsetzung der AppBarLayout.OnOffsetChangedListener in der Tätigkeit. In der onOffsetChanged-Methode passen Sie den Rand der Ansicht unten entsprechend der aktuell gescrollten Höhe an.

@Override 
public void onOffsetChanged(AppBarLayout appBarLayout, int i) { 

    RelativeLayout.LayoutParams bottomLayoutParams = (RelativeLayout.LayoutParams)fragment.bottomLayout.getLayoutParams(); 
    bottomLayoutParams.setMargins(0,0,0,(actionBarHeight + i)); 
    fragment.bottomLayout.setLayoutParams(bottomLayoutParams); 

} 

Hier Fragment ist die Instanz des Fragments und bottomLayout ist die Ansicht an der Unterseite.

Verwandte Themen