2016-10-04 7 views
0

Ich versuche, diese Pageviewer mit Fragmenten zu arbeiten, aber ich bin über ein Problem gestolpert, wo die Ansicht auf dem Bildschirm auf Swipe bleibt. Im Idealfall möchte ich, dass es nur auf einem bestimmten Layout ist, aber ich bin mir nicht sicher, warum es auf andere Bildschirme "übertragen" wird (es bleibt auch während des Übergangs zwischen Fragmenten auf dem Bildschirm).Android - PageViewer Ansicht fest auf dem Bildschirm

Jede Rückmeldung wird geschätzt!

Link to Imgur Screenshots

Main:

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) { 

    } 
} 

Adapter:

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; 
} 
} 

Fragment Klassen sind im Grunde diese:

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; 
} 
} 

Haupt Layout:

<?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> 

Antwort

1

Die EditText ist im Hauptlayout des gleiche Layout, das der ViewPager in, sollte es aber in der Registerkarte aufgeblasen werden.. Sie müssen für jede Registerkarte ein separates Layout erstellen.

Haupt Layout

<?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> 

Dann müssen Sie das neue Layout in Fragment 1.

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

return rootView; 
+0

aufzublasen Ahh Sie zu 100% korrekt sind. Danke für die schnelle und direkte Antwort. – WonderfulWonder

Verwandte Themen