Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android viewpager中的多窗格片段_Android_Android Viewpager_Fragment_Pager - Fatal编程技术网

Android viewpager中的多窗格片段

Android viewpager中的多窗格片段,android,android-viewpager,fragment,pager,Android,Android Viewpager,Fragment,Pager,我目前正在开发一个应用程序,希望它能像一个“电子书”播放器一样运行。在阅读了大量与片段相关的教程后,我决定采用“片段/Viewpager”方法 更详细地讲,我决定遵循Linden Dar关于嵌套片段的优秀教程linghttps://plus.google.com/100467024733771542884/posts/24HcFW5hEiV. 我为每个单独的书籍页面创建了一个“webview”片段,它有自己的布局。因此,如果我的书由6页组成,那么我将有BookPage1Fragment、Book

我目前正在开发一个应用程序,希望它能像一个“电子书”播放器一样运行。在阅读了大量与片段相关的教程后,我决定采用“片段/Viewpager”方法

更详细地讲,我决定遵循Linden Dar关于嵌套片段的优秀教程linghttps://plus.google.com/100467024733771542884/posts/24HcFW5hEiV.

我为每个单独的书籍页面创建了一个“webview”片段,它有自己的布局。因此,如果我的书由6页组成,那么我将有BookPage1Fragment、BookPage2Fragment、BookPage3Fragment、BookPage4Fragment、BookPage5Fragment、BookPage6Fragment等。我设法在viewpager中实现了这一点,因此所有的浏览片段等都可以正常工作。问题是,在屏幕上一次只能看到一个片段。在大型设备上运行应用程序时,我希望有两个片段(多窗格),在横向上运行,在小型设备或纵向视图上运行时,我希望有一个片段(一次一个片段)。我想显示一个两窗格布局,左一个片段,右一个片段

见下面的代码:

public class ParentFragment extends Fragment {

public static final String TAG = ParentFragment.class.getSimpleName();

public static ParentFragment newInstance() {
return new ParentFragment();
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle            savedInstanceState) {
return inflater.inflate(R.layout.fragment_parent, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

ViewPager mViewPager = (ViewPager) view.findViewById(R.id.viewPager);
mViewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
}

public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public int getCount() {
    return 6;
}

/*

@Override
public Fragment getItem(int position) {
    Bundle args = new Bundle();
    args.putInt(TextViewFragment.POSITION_KEY, position);
    return TextViewFragment.newInstance(args);
}


*/

@Override
public Fragment getItem(int position) {
    switch (position) {
    case 0:
        return new BookPage1Fragment();
    case 1:
        return new BookPage2Fragment();
    case 2:
        return new BookPage3Fragment();
    case 3:
        return new BookPage4Fragment();
    case 4:
        return new BookPage5Fragment();
    case 5:
        return new BookPage6Fragment();


    default:
        return getItem(0);
    }
}


@Override
public CharSequence getPageTitle(int position) {
    return "Fragment # " + position;
}

}

}
基本上,在横向模式下出现两个片段,在纵向模式下一次出现一个片段,就像developer.blogspot上的示例所描述的那样,但嵌入了一个viewpager中

这是我的主要布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout> xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

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

</RelativeLayout>
以下是我的webview片段布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<WebView
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

</LinearLayout>

最后,我想:

1:在横向模式下显示viewpager中的两个片段,在纵向模式下显示单个片段

2:使用一个活动而不考虑设备大小,并在运行时决定是在布局中组合片段(创建多窗格设计)还是交换片段(创建单窗格设计)


希望这一切都有意义!提前感谢您的建议…

您必须为横向模式创建一个布局文件。您必须在res文件夹中创建一个具有布局土地名称的文件。在该文件夹中创建一个具有相同名称的布局,该布局放置在布局文件中。当屏幕更改为横向模式时,Android会自动访问它

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<WebView
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

</LinearLayout>