android - MultiViewPager+ZoomOutPageTransformer not working properly -
i'm trying implement viewpager using multiviewpager , using google's zoomoutpagetransformer effect, purpose achieving image :
but can't display 2 pages in right , left , each time single page in middle of screen! view pager code :
mviewpager.setpagemargin( -64); madapter = new viewpageradapter(getactivity(), mclasses); mviewpager.setpagetransformer(true, new zoomoutpagetransformer()); mviewpager.setadapter(madapter);
this viewpager in xml :
<ir.phzrobin.utils.multiviewpager android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_margin="20dp" app:matchchildwidth="@+id/textview_class_title" > </ir.phzrobin.utils.multiviewpager>
and viewpager page layout :
<textview android:id="@+id/textview_class_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignparenttop="true" android:layout_centervertical="true" android:layout_centerhorizontal="true" android:layout_gravity="top" android:layout_margin="5dp" android:gravity="center_horizontal" android:padding="10dp" android:text="fsafjabf" android:textalignment="gravity" android:textcolor="@color/white" android:textsize="17sp" /> <textview android:id="@+id/textview_class_teacher" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/textview_class_title" android:layout_centervertical="true" android:layout_margin="5dp" android:gravity="center_horizontal" android:padding="10dp" android:text="fsafjabf" android:textalignment="gravity" android:textcolor="@color/white" android:textsize="17sp" /> <imageview android:id="@+id/button_options" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignparentbottom="true" android:layout_alignparentleft="true" android:layout_margin="20dp" android:layout_marginright="2dp" android:background="@drawable/overflow" /> </relativelayout>
what have tried this , multiviewpager developer's answer here can please me achieve goal? thanks
this view pager adapter:
public class viewpageradapter extends pageradapter { // imageloader imageloader = imageloader.getinstance(); // displayimageoptions options; // private imageloadinglistener imagelistener; context activity; list<classes> items; public viewpageradapter(context activity, list<classes> items) { this.activity = activity; this.items = items; } public void setitems(list<classes> items) { this.items = items; notifydatasetchanged(); } @override public int getcount() { // todo auto-generated method stub return items.size(); } @override public boolean isviewfromobject(view arg0, object arg1) { // todo auto-generated method stub return arg0 == arg1; } @override public object instantiateitem(viewgroup container, int position) { final int pos = position; // todo auto-generated method stub layoutinflater inflater = (layoutinflater) activity .getsystemservice(activity.layout_inflater_service); view view = inflater.inflate(r.layout.row_viewpager, container, false); textview mclasstitle = (textview) view .findviewbyid(r.id.textview_class_title); mclasstitle.settext("عنوان درس: " + items.get(pos).getsubject()); mclasstitle.settypeface(appfont.getappfont()); ((textview) view.findviewbyid(r.id.textview_class_teacher)) .settext("نام استاد: " + items.get(pos).getmastername()); ((textview) view.findviewbyid(r.id.textview_class_teacher)) .settypeface(appfont.getappfont()); relativelayout mlayout = (relativelayout) view .findviewbyid(r.id.rl_viewpager); mlayout.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { intent _intent = new intent(contextval.getappcontext(), classnotes.class); _intent.putextra("classid", string.valueof(items.get(pos).getid())); // set selected // item id // // intent // activity // use in // classnotes // activity! activity.startactivity(_intent); // open notes activity } }); imageview moverflow = (imageview) view.findviewbyid(r.id.button_options); moverflow.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub popupmenu popup = new popupmenu(contextval.getappcontext(), v); popup.getmenuinflater().inflate(r.menu.poupup_menu, popup.getmenu()); popup.setonmenuitemclicklistener(new popupmenu.onmenuitemclicklistener() { public boolean onmenuitemclick(menuitem item) { if(item.geticon() != null) {//edit item intent _classwindow = new intent(contextval.getappcontext(), addnewclass.class); _classwindow.putextra("classid", string.valueof(items.get(pos).getid())); activity.startactivity(_classwindow); } else{//delete item alertdialog.builder builder = new alertdialog.builder( contextval.getappcontext()); builder.settitle("حذف کلاس"); builder.setmessage("آیا مطمعن هستید که میخواهید این درس را حذف کنید ؟"); builder.setpositivebutton("بله", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int which) { // nothing close dialog log.e("onclick", "yes"); databasehandler _db = new databasehandler(contextval .getappcontext()); _db.deleteclass(items.get(pos)); _db.deleteclassnotes(items.get(pos).getid()); contextval.mviewfragment.refreshviewpager(); // refresh items ! // , remove // deleted item // user's eyes lol dialog.dismiss(); } }); builder.setnegativebutton("خیر", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // nothing log.e("onclick", "no"); dialog.dismiss(); } }); alertdialog alert = builder.create(); alert.show(); } return true; } }); popup.show(); } }); container.addview(view, 0); return view; } @override public void destroyitem(viewgroup container, int position, object object) { // todo auto-generated method stub container.removeview((view) object); }
}
look @ example fragment page layout multiviewpager sample on github:
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativepackage}.${activityclass}"> <framelayout android:id="@+id/vg_cover" android:layout_width="200dp" android:layout_height="match_parent" android:layout_centerinparent="true" tools:ignore="uselessparent"> <imageview android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginleft="16dp" android:layout_marginright="16dp" android:background="@drawable/bg_page" android:scaletype="centerinside" android:src="@drawable/im_pixplicity" tools:ignore="contentdescription" /> <textview android:id="@+id/tv_item" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:gravity="center" /> </framelayout> </relativelayout>
there relativelayout
width set match_parent
, inner framelayout
explicit width of 200dp. in inner framelayout
ends being fragment page.
your layout has app:matchchildwidth="@+id/textview_class_title"
not viewgroup
inner framelayout
.
you need rewrite fragment page layout have inner viewgroup
textview
s inside.
also, not explicitly call setpagemargin()
, multiviewpager
sets page margin internally based on measurements.
if still having problems getting work, recommend starting sample application multiviewpager , modifying until layout results looking for.
Comments
Post a Comment