java - Viewpager inside a Dialog not working -
i using following code show dialog viewpager inside it
new handler().postdelayed(new runnable() { @override public void run() { tutorialalerts alert = new tutorialalerts(mainactivity.this, android.r.style.theme_translucent_notitlebar_fullscreen, tutorialalerts.tutorial_alert_initial); alert.show(); } }, 3000); import android.app.dialog; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.app.fragmentactivity; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmentpageradapter; import android.support.v4.view.pageradapter; import android.support.v4.view.viewpager; import android.view.view; import android.widget.textview; import com.iyedah.weping.r; import com.iyedah.weping.fragments.tutorialfragment; import com.viewpagerindicator.circlepageindicator; import java.util.arraylist; public class tutorialalerts extends dialog { public arraylist<tutorialfragment> fragments = new arraylist<tutorialfragment>(); private int type = tutorial_alert_chat; public static final int tutorial_alert_chat = 0; public static final int tutorial_alert_map = 1; public static final int tutorial_alert_initial = 2; public static final int tutorial_alert_message = 3; private circlepageindicator cirleindicator; private viewpager pager; private fragmentactivity mcontext; private textview nextbtn; private textview title; private pageradapter adapter; public tutorialalerts(fragmentactivity context, int theme, int type) { super(context, theme); this.mcontext = context; this.type = type; } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.dialog_tutorial); nextbtn = (textview) this.findviewbyid(r.id.nextbtn); title = (textview) findviewbyid(r.id.title); pager = (viewpager) findviewbyid(r.id.pager); pager.setonpagechangelistener(mpagechangelistener); cirleindicator = (circlepageindicator) findviewbyid(r.id.cirleindicator); if (type == tutorial_alert_initial) { title.settext("getting started"); tutorialfragment page1 = new tutorialfragment(); bundle bundle = new bundle(); bundle.putint("pagenumber", 1); page1.setarguments(bundle); fragments.add(page1); tutorialfragment page2 = new tutorialfragment(); bundle = new bundle(); bundle.putint("pagenumber", 2); page2.setarguments(bundle); fragments.add(page2); tutorialfragment page3 = new tutorialfragment(); bundle = new bundle(); bundle.putint("pagenumber", 3); page3.setarguments(bundle); fragments.add(page3); } adapter = new mypageradapter(mcontext.getsupportfragmentmanager()); } @override public void show() { super.show(); pager.setadapter(adapter); cirleindicator.setviewpager(pager); pager.setcurrentitem(0, true); } /************************************************************************ * * **********************************************************************/ public class mypageradapter extends fragmentpageradapter { public mypageradapter(fragmentmanager fm) { super(fm); } @override public charsequence getpagetitle(int position) { return ""; } @override public int getcount() { return fragments.size(); } @override public fragment getitem(int position) { return fragments.get(position); } } private viewpager.onpagechangelistener mpagechangelistener = new viewpager.onpagechangelistener() { @override public void onpageselected(final int position) { fragments.get(position).setupinitialtutorial(position + 1); if(position == fragments.size()) { nextbtn.settext("done"); nextbtn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { dismiss(); } }); } else { nextbtn.settext("next"); nextbtn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { pager.setcurrentitem(position + 1, true); } }); } } @override public void onpagescrolled(int position, float arg1, int arg2) { } @override public void onpagescrollstatechanged(int arg0) { } }; } <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#c8000000" > <textview android:layout_margintop="20dp" android:gravity="center" android:textstyle="bold" android:textsize="23sp" android:textcolor="@color/green" android:text="@string/use_app" android:layout_width="match_parent" android:layout_height="58dp" android:layout_centerhorizontal="true" android:adjustviewbounds="true" android:id="@+id/title"/> <android.support.v4.view.viewpager android:id="@+id/pager" android:layout_above="@+id/nextbtn" android:layout_width="match_parent" android:layout_height="match_parent" /> <com.viewpagerindicator.circlepageindicator android:layout_centerhorizontal="true" android:id="@+id/cirleindicator" android:layout_marginbottom="10dp" android:layout_above="@+id/nextbtn" android:layout_height="40dp" android:layout_width="60dp" /> <textview android:gravity="center" android:textstyle="bold" android:textsize="20sp" android:layout_alignparentbottom="true" android:background="@color/mild_black" android:id="@+id/nextbtn" android:textcolor="@color/green" android:text="@string/next" android:layout_width="match_parent" android:layout_height="58dp" android:layout_centerhorizontal="true" android:adjustviewbounds="true" /> </relativelayout>
dialog shows ok viewpager seems invisible shows nothing.
i've extend dialogfragment class , create new customdialog
public class customdailog extends dialogfragment { private view view; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view = inflater.inflate(r.layout.addon_dialog, container); getdialog().getwindow().requestfeature(window.feature_no_title); getdialog().getwindow().setbackgrounddrawable(new colordrawable(android.graphics.color.transparent)); getdialog().setcancelable(true); getdialog().getwindow().setgravity(gravity.top); return view; } @override public void onactivitycreated(bundle arg0) { super.onactivitycreated(arg0); displaymetrics metrics = getresources().getdisplaymetrics(); int screenwidth = (int) (metrics.widthpixels * 0.95); int screenheight = (int) (metrics.heightpixels * 0.95); getdialog().getwindow().setlayout(screenwidth, screenheight); android.support.v4.view.viewpager addonsviewpager = (android.support.v4.view.viewpager) view.findviewbyid(r.id.addonsviewpager); }
}
addon_dialog.xml
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.viewpager android:id="@+id/addonsviewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent"> </android.support.v4.view.viewpager> </relativelayout>
and use dialog in code as...
customdailog customdailog=new customdailog (); customdailog.show(getfragmentmanager(),"addons_fragment");
Comments
Post a Comment