java - Custom Toolbar overlapping Fragment -
so i'm trying set fragment shows badges , reason won't fit screen , starts top. seems results in toolbar floating on whole fragment. there i'm doing wrong can point out? i'm using 3 fragments tabbing system.
1) fragment (myfragment.java)
public class myfragment extends fragment { public myfragment() { // required empty public constructor } private recyclerview recyclerview; private badgeadapter adapter; private list<hatbadge> badge; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { final view view = inflater.inflate(r.layout.fragment_my_closet, container, false); final fragmentactivity c = getactivity(); final recyclerview recyclerview = (recyclerview) view.findviewbyid(r.id.recycler_view); badge = new arraylist<>(); adapter = new badgeadapter(getcontext(), badge); recyclerview.layoutmanager mlayoutmanager = new gridlayoutmanager(getcontext(), 2); recyclerview.setlayoutmanager(mlayoutmanager); recyclerview.additemdecoration(new myfragment.gridspacingitemdecoration(2, dptopx(10), true)); recyclerview.setitemanimator(new defaultitemanimator()); new thread(new runnable() { @override public void run() { c.runonuithread(new runnable() { @override public void run() { recyclerview.setadapter(adapter); } }); } }).start(); preparealbums(); return view; } /** * adding few albums testing */ private void preparealbums() { int[] covers = new int[]{ r.drawable.nike, r.drawable.nike, r.drawable.nike, r.drawable.nike}; hatbadge = new hatbadge("hat 1", 13, covers[0]); badge.add(a); = new hatbadge("hat 1", 8, covers[1]); badge.add(a); = new hatbadge("hat 5", 11, covers[2]); badge.add(a); = new hatbadge("hat 5", 11, covers[2]); badge.add(a); adapter.notifydatasetchanged(); } /** * recyclerview item decoration - give equal margin around grid item */ public class gridspacingitemdecoration extends recyclerview.itemdecoration { private int spancount; private int spacing; private boolean includeedge; public gridspacingitemdecoration(int spancount, int spacing, boolean includeedge) { this.spancount = spancount; this.spacing = spacing; this.includeedge = includeedge; } @override public void getitemoffsets(rect outrect, view view, recyclerview parent, recyclerview.state state) { int position = parent.getchildadapterposition(view); // item position int column = position % spancount; // item column if (includeedge) { outrect.left = spacing - column * spacing / spancount; // spacing - column * ((1f / spancount) * spacing) outrect.right = (column + 1) * spacing / spancount; // (column + 1) * ((1f / spancount) * spacing) if (position < spancount) { // top edge outrect.top = spacing; } outrect.bottom = spacing; // item bottom } else { outrect.left = column * spacing / spancount; // column * ((1f / spancount) * spacing) outrect.right = spacing - (column + 1) * spacing / spancount; // spacing - (column + 1) * ((1f / spancount) * spacing) if (position >= spancount) { outrect.top = spacing; // item top } } } } /** * converting dp pixel */ private int dptopx(int dp) { resources r = getresources(); return math.round(typedvalue.applydimension(typedvalue.complex_unit_dip, dp, r.getdisplaymetrics())); } } 2) activity running fragment (myactivity.java)
public class myactivity extends actionbaractivity { toolbar toolbar; tablayout tablayout; viewpager viewpager; viewpageradapter viewpageradapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //remove title bar this.requestwindowfeature(window.feature_no_title); this.getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen); setcontentview(r.layout.activity_tab); toolbar = (toolbar)findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); tablayout = (tablayout)findviewbyid(r.id.tablayout); viewpager = (viewpager)findviewbyid(r.id.viewpager); viewpageradapter = new viewpageradapter(getsupportfragmentmanager()); viewpageradapter.addfragments(new homefragment(), "info"); viewpageradapter.addfragments(new myfragment(), "my fragment"); viewpageradapter.addfragments(new carefragment(), "care"); viewpager.setadapter(viewpageradapter); tablayout.setupwithviewpager(viewpager); } 3) fragment_my_closet.xml
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/viewbg" > <android.support.v7.widget.recyclerview android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="vertical" android:cliptopadding="false" /> </relativelayout> 4) activity_tab.xml
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.appbarlayout android:layout_height="wrap_content" android:layout_width="match_parent" app:theme="@style/apptheme" > <include android:layout_height="wrap_content" android:layout_width="match_parent" layout="@layout/toolbar_layout" /> <android.support.design.widget.tablayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tablayout" app:tabmode="fixed" app:tabgravity="fill" ></android.support.design.widget.tablayout> </android.support.design.widget.appbarlayout> <android.support.v4.view.viewpager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewpager" ></android.support.v4.view.viewpager> </relativelayout> 5) toolbar_layout.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.toolbar xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorprimarydark" android:fitssystemwindows="true" android:id="@+id/toolbar" app:theme="@style/theme.appcompat.light.noactionbar"> </android.support.v7.widget.toolbar>
appbarlayout depends on being child of coordinatorlayout. needs scrolling view implements scrollingviewbehavior. there's standard 1 implemented can used setting app:layout_behavior="@string/appbar_scrolling_view_behavior".
<android.support.design.widget.coordinatorlayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.appbarlayout android:layout_height="wrap_content" android:layout_width="match_parent" app:theme="@style/apptheme" > <include android:layout_height="wrap_content" android:layout_width="match_parent" layout="@layout/toolbar_layout" /> <android.support.design.widget.tablayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tablayout" app:tabmode="fixed" app:tabgravity="fill"/> </android.support.design.widget.appbarlayout> <android.support.v4.view.viewpager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewpager" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.coordinatorlayout>
Comments
Post a Comment