簡體   English   中英

如何在AlertDialog中使用ViewPager? - Android 4.0+

[英]How to use ViewPager in a AlertDialog? - Android 4.0+

我試圖在用戶點擊按鈕時顯示一個對話框。 在對話框中,我想創建一個viewpager來顯示多個片段。

請給我一個例子或教程。 我搜索並使用了許多示例代碼。 但他們仍然無法工作。

編輯:我目前的代碼

  • 用於自定義對話框的類

    公共類ViewPagerInDialog {

     private final ActionBarActivity context; private AlertDialog.Builder builder; private int currentLv = 1; private static final int NUM_PAGES = 5; private PagerAdapter pagerAdapter; private ViewPager pager; public ViewPagerInDialog(ActionBarActivity context){ this.context = context; } public void show(){ builder = new AlertDialog.Builder(context); LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.level_dialog, null, false); pager = (ViewPager) view.findViewById(R.id.pager); pagerAdapter = new ScreenSlidePagerAdapter(context.getSupportFragmentManager()); pager.setAdapter(pagerAdapter); pager.setCurrentItem(currentLv - 1); builder.setView(view); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog a = builder.create(); a.show(); } 

    私有類ScreenSlidePagerAdapter擴展FragmentStatePagerAdapter {

     private Fragment currentFragment; public Fragment getCurrentFragment() { return currentFragment; } public ScreenSlidePagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return new LevelFragment(); } @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { if (getCurrentFragment() != object) { currentFragment = ((Fragment) object); } super.setPrimaryItem(container, position, object); } @Override public int getCount() { return NUM_PAGES; } 

    }}

  • 對話框布局:LinearLayout包含ViewPager

     <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/blue" /> 

  • LevelFragment:

    公共類LevelFragment擴展Fragment {

     @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.experience, container, false); return rootView; } 

    }

=>顯示對話框:

 private void showLevels() {
    ViewPagerInDialog dialog = new ViewPagerInDialog((ActionBarActivity) getActivity());
    dialog.show();
}

這可以顯示對話框,但只有藍色背景。 ViewPager無法按我的意願滑動。

AlertDialog.Builder.setView(View)是允許在對話框內容區域中添加自定義視圖的方法。

您可以膨脹從ViewPager派生的復合視圖; 或者在使用此方法時創建新的ViewPager實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM