View Single Post
Old 07-03-2012, 07:59 AM   #1
polygrimm
Junior Member
polygrimm began at the beginning.
 
Posts: 1
Karma: 10
Join Date: Jul 2012
Device: none
Question How to make TextView inside ViewPager scroll vertically

I've got a ViewPager and a TextView inside it. When content of TextView is larger then it is visible on screen, there shall be possibility to scroll it vertically. But it does not do this automatically

Here is an xml for TextView

Code:
   <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/txText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#338877"
        android:padding="15dp"
        android:scrollHorizontally="false"
        android:scrollbarAlwaysDrawVerticalTrack="true"
        android:scrollbars="vertical"
        android:textAppearance="?android:attr/textAppearanceMedium" />
And here is an xml for ViewPager

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

    <android.support.v4.view.ViewPager
        android:id="@+id/vpPonkSwiper"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/lbPonkFooter" />

    <TextView
        android:id="@+id/lbPonkFooter"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:text="Footer" />

</RelativeLayout>
Here is an Adapter:

Code:
public class PonkPageAdapter extends PagerAdapter
{
    private int             pagesCount  = -1;
    private List<Ponk>      data;
    private App             app;
    private MockPersistence db;
    private Activity        activity;
    private TextView        currentView;
    private LayoutInflater  inflater;

    public PonkPageAdapter(Activity activity, byte section) {
        this.activity = activity;
        this.app = ((App) activity.getApplication());
        this.db = app.getPersistence();
        this.section = section;
        this.data = db.findPonksBySection(section); // new LinkedList<Ponk>();
        this.inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        //
        this.pagesCount = db.countPonksInSection(section);
    }

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

    @Override
    public Object instantiateItem(View collection, int position)
    {
        TextView tv = getNewView();
        Ponk j = data.get(position);
        tv.setText(j.text);
        tv.setTag(j.id);
        setFontSizeInSP(tv, app.getFontSize());
        tv.setTag(position);
        ((ViewPager) collection).addView(tv, 0);

        return tv;
    }

    private TextView getNewView()
    {
        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         TextView tv = (TextView)inflater.inflate(R.layout.Ponk, null);
        return tv;
    }

    @Override
    public void setPrimaryItem(ViewGroup container, int position, Object object)
    {
        currentView = (TextView) object;
    }

    @Override
    public void destroyItem(View collection, int position, Object view)
    {
        ((ViewPager) collection).removeView((TextView) view);
    }

    @Override
    public boolean isViewFromObject(View view, Object object)
    {
        return view == (TextView) object;
    }

    @Override
    public Parcelable saveState()
    {
        return null;
    }
}
polygrimm is offline   Reply With Quote