How do you set Android ViewPager to encompass only one View or Layout?

Posted by Kyle on Stack Overflow See other posts from Stack Overflow or by Kyle
Published on 2012-12-01T16:52:32Z Indexed on 2012/12/01 17:03 UTC
Read the original article Hit count: 412

Filed under:
|

I am struggling with the concepts needed to properly implement a view pager. By following some tutorials and referencing developer.android.com, I am able to get a view pager almost fully functional. The pager will flip through several text views that have been setup to say "My Message 0" through "My Message 9". The problem is that the view pager also flips the button on the bottom of the activity and the red block that is right above the button.

issues with view pager mid-flip

I would like to have the view pager only cycle through the text. Would you please help me understand what I'm doing wrong?

I have an activity that represents a dashboard:

public class DashBoard extends FragmentActivity
{
  private static final int NUMBER_OF_PAGES = 10;

  private ViewPager mViewPager;
  private MyFragmentPagerAdapter mMyFragmentPagerAdapter;

  public void onCreate(Bundle icicle){
  super.onCreate(icicle);
  setContentView(R.layout.dashboard);

  mViewPager = (ViewPager) findViewById(R.id.viewpager);
  mMyFragmentPagerAdapter = new    MyFragmentPagerAdapter(getSupportFragmentManager());
  mViewPager.setAdapter(mMyFragmentPagerAdapter);

  }

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

 @Override
 public Fragment getItem(int index)
 {
     return PageFragment.newInstance("My Message " + index);
 }

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

and a class for the page fragment:

public class PageFragment extends Fragment {

public static PageFragment newInstance(String title){

  PageFragment pageFragment = new PageFragment();
  Bundle bundle = new Bundle();
  bundle.putString("title", title);
  pageFragment.setArguments(bundle);
  return pageFragment;
    }

    @Override
    public void onCreate(Bundle icicle){
  super.onCreate(icicle);

    }

    @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle icicle){
  View view = inflater.inflate(R.layout.dashboard, container, false);
  TextView textView = (TextView) view.findViewById(R.id.textViewPage);
  textView.setText(getArguments().getString("title"));
  return view;

     }

    }

and finally, my xml for the dashboard:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/dashbaordLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    />
<TextView
    android:id="@+id/textViewPage"
    android:layout_width = "match_parent"
    android:layout_height= "wrap_content"
    />  

<Button
    android:id="@+id/newGoalButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/stringNewGoal"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:onClick="createNewGoal"
    />

<RelativeLayout
    android:id="@+id/SpaceBottom"
    android:layout_width="match_parent"
    android:layout_height="75dp"
    android:layout_above="@id/newGoalButton"
    android:background="@color/red"
>

   </RelativeLayout>
     </RelativeLayout>

A note about my xml, I tried wrapping the text view in some view pager tags eg:

<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    >
<TextView
    android:id="@+id/textViewPage"
    android:layout_width = "match_parent"
    android:layout_height= "wrap_content"
    />  
</android.support.v4.view.ViewPager>

But all that did was make the text view disappear from the screen, while the button and red block still cycled as in the original issue.

© Stack Overflow or respective owner

Related posts about android

Related posts about android-viewpager