TitlePageIndicator:标题文本没有出现或隐藏在活动布局之上。(Viewpager,Xml)

时间:2012-08-29 23:21:11

标签: android android-layout android-viewpager android-xml viewpagerindicator

ViewPagerFragment.java

package nsixty.crew.app;

import java.util.List;
import java.util.Vector;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

import com.viewpagerindicator.TitlePageIndicator;
import com.viewpagerindicator.TitleProvider;

public class ViewPagerFragment extends FragmentActivity {

    private CustomFragmentAdapter mPagerAdapter;

    ViewPager pager;
    TitlePageIndicator titleIndicator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.lcmeter);

        this.initialisePaging();

    }

    private void initialisePaging() {

        List<Fragment> fragments = new Vector<Fragment>();

        fragments
                .add(Fragment.instantiate(this, LoginActivity.class.getName()));
        fragments.add(Fragment.instantiate(this, main.class.getName()));
        this.mPagerAdapter = new CustomFragmentAdapter(
                super.getSupportFragmentManager(), fragments);
        pager = (ViewPager) findViewById(R.id.viewpager);
        pager.setAdapter(this.mPagerAdapter);
        titleIndicator = (TitlePageIndicator) findViewById(R.id.titles);
        titleIndicator.setViewPager(pager);

    }

    public static class CustomFragmentAdapter extends FragmentPagerAdapter
            implements TitleProvider {
        public static final int POSITION_PAGE_1 = 0;
        public static final int POSITION_PAGE_2 = 1;
        public static final int POSITION_PAGE_3 = 2;
        private List<Fragment> fragments;
        private static final String[] TITLES = new String[] { "LOGIN", "HOME" };

        public static final int NUM_TITLES = TITLES.length;

        @Override
        public String getTitle(int position) {
            return TITLES[position];
        }

        public CustomFragmentAdapter(FragmentManager fm,
                List<Fragment> fragments) {
            super(fm);
            this.fragments = fragments;
        }

        @Override
        public int getCount() {
            // return this.fragments.size();
            return NUM_TITLES;
        }

        @Override
        public Fragment getItem(int position) {

            try {
                LoginActivity.class.newInstance();
            } catch (InstantiationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return this.fragments.get(position);

        }

    }

}

lcmeter.xml

<?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"
    android:orientation="vertical" >


    <com.viewpagerindicator.TitlePageIndicator
        android:id="@+android:id/titles"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <android.support.v4.view.ViewPager
        android:id="@+android:id/viewpager"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

</LinearLayout>

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="nsixty.crew.app"
    android:versionCode="1"
    android:versionName="1.0" >

    <support-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="false" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:icon="@drawable/icon87"
        android:label="@string/app_name" >
        <activity
            android:name="ViewPagerFragment"
            android:theme="@android:style/Theme.Black.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".main" >
            <intent-filter>
                <action android:name="nsixty.crew.app.main" />

                <category
                    android:name="android.intent.category.DEFAULT"
                    android:screenOrientation="portrait" />
            </intent-filter>
        </activity>
        <activity
            android:name=".play"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="nsixty.crew.app.play" />

                <category
                    android:name="android.intent.category.DEFAULT"
                    android:screenOrientation="landscape" />
            </intent-filter>
        </activity>
        <activity
            android:name=".secondView"
            android:label="@string/app_name"
            android:screenOrientation="landscape" >
            <intent-filter>
                <action android:name="nsixty.crew.app.SECONDVIEW" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".recorder"
            android:configChanges="orientation"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
            <intent-filter>
                <action android:name="nsixty.crew.app.RECORD" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".send"
            android:label="@string/app_name" >

            <!-- android:theme="@android:style/Theme.Dialog" -->
            <intent-filter>
                <action android:name="nsixty.crew.app.SHARE" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".gallery"
            android:theme="@android:style/Theme.Dialog" >
            <intent-filter>
                <action android:name="nsixty.crew.app.gallery" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name=".RegisterActivity"
            android:theme="@android:style/Theme.Dialog" >
        </activity>
        <activity
            android:name=".media"
            android:theme="@android:style/Theme.Dialog" >
            <intent-filter>
                <action android:name="nsixty.crew.app.media" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name=".LoginActivity" >
        </activity>
        <activity android:name="CustomTitleBar" >
        </activity>
    </application>

    <uses-sdk android:minSdkVersion="8" />

    <uses-permission android:name="android.permission.WRITE_SETTINGS" >
    </uses-permission>
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />

    <uses-feature android:name="android.hardware.camera" />

</manifest>

ScreenShot1 LoginActivity activity

ScreenShot2 Sliding to main activity

请帮助我解决这些小问题,我无法弄清楚问题的来源,我已经为这些工作了好几个小时。我认为问题将来自Xml布局谢谢。

3 个答案:

答案 0 :(得分:0)

尝试这样:

  @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.viewpager);

    // Create our custom adapter to supply pages to the viewpager.
    mPagerAdapter = new Pager_Adapter(this,getSupportFragmentManager());
    mViewPager = (ViewPager)findViewById(R.id.pager);
    mViewPager.setAdapter(mPagerAdapter);

    // Start at a custom position
    mViewPager.setCurrentItem(0);

     // Find the indicator from the layout
    mTabs = (TitleIndicator) findViewById(R.id.swipeytabs);
    mTabs.setAdapter(mPagerAdapter);

    // Set the indicator as the pageChangeListener
    mViewPager.setOnPageChangeListener(mTabs);

}

class Pager_Adapter extends FragmentPagerAdapter implements ViewpagerAdapter{


    private final Context mContext;

    public Pager_Adapter(Context context, FragmentManager fm) {
        super(fm);

        this.mContext = context;
    }


    @Override
    public Fragment getItem(int pos) {

        return ItemFragment.newInstance(QUES[pos],listArray[pos]);
        //return ItemFragment.newInstance(QUES[pos % TITLES.length]);

    }

    @Override
    public int getCount() {
        return TITLES.length;
    }

    public TextView getTab(final int position, TitleIndicator root) {
        TextView view = (TextView) LayoutInflater.from(mContext).inflate(
                R.layout.swipey_tab_indicator, root, false);

                             //  swipey_tab_indicator is the your titleBar Layout ,
                              //  You can use only textview on that layout for the titlebar
        view.setText(TITLES[position]);
        view.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                mViewPager.setCurrentItem(position);

            }
        });
        return view;
    }

}

有关详细信息,请查看此信息 link

答案 1 :(得分:0)

我使用了这个库View pager extensions,我使用了swipey标签视图指示器而不是标题页指示器,它运行得很好。

答案 2 :(得分:0)

嗯,看起来这个文本的默认选择颜色是黑色,你的背景是这样你应该把它改成android XML文件中的另一种颜色。