2016-10-04 22 views
0

私はこのページビューアを動作させるためにフラグメントを使用しようとしていますが、スワイプで画面に表示されたままの状態で問題に遭遇しました。理想的には、私はそれが特定のレイアウト上にしか存在しないようにしたいと思っています。なぜ、それが他のスクリーンに「持ち越し」ているのか、あまり分かりません。Android - PageViewer画面上に表示された表示

フィードバックは高く評価されます!

Link to Imgur Screenshots

メイン:

private void initUI() 
{ 
    // ---------Page Viewer with Fragments ----------- 

    viewPager = (ViewPager) findViewById(R.id.pager); 
    actionBar = getSupportActionBar(); 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    viewPager.setAdapter(mAdapter); 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(this)); 
    } 


    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      actionBar.setSelectedNavigationItem(position); 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 
} 


    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
     viewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 
} 

アダプタ:

01:

public class TabsPagerAdapter extends FragmentPagerAdapter { 

public TabsPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int index) { 

    switch (index) { 
     case 0: 
      // Main Frag 
      return new Fragment1(); 
     case 1: 
      // Second Frag 
      return new Fragment2(); 
     case 2: 
      // Third Frag 
      return new Fragment3(); 
    } 

    return null; 
} 

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

フラグメントのクラスは基本的に、このです

public class Fragment1 extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.main, container, false); 

    return rootView; 
} 
} 

主レイアウト:

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

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

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

</RelativeLayout> 

答えて

1

のEditTextがメインのレイアウト、ViewPagerはである同じレイアウトであることは、タブ内で膨張されなければなりません。各タブごとに個別のレイアウトを作成する必要があります。

メインレイアウト

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

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

</RelativeLayout> 

layout_fragment_1.xml

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

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 

次に、あなたが100%正しいですああフラグメント1

View rootView = inflater.inflate(R.layout.layout_fragment_1, container, false); 

return rootView; 
+0

に新しいレイアウトを膨らませる必要があります。速やかにポイント返信に感謝します。 – WonderfulWonder

関連する問題