Android ViewPagerIndicator:选项卡PagerIndicator不可见

Android ViewPagerIndicator:选项卡PagerIndicator不可见,android,android-layout,android-viewpager,android-gui,Android,Android Layout,Android Viewpager,Android Gui,我现在正在努力使用viewpagerindicator。当我使用TitlePageIndicator时,一切正常。但是当我尝试使用TabPageIndicator时,我看不到它 它不会出现在层次视图中。我尝试了很多方法,比如实现getTitle和getPagetitle,但都没有成功。当我将布局高度设置为100px时,我可以看到条形图,但没有选项卡。真的很高兴能得到任何帮助 先谢谢你 这是我的密码: <?xml version="1.0" encoding="utf-8"?> <

我现在正在努力使用viewpagerindicator。当我使用TitlePageIndicator时,一切正常。但是当我尝试使用TabPageIndicator时,我看不到它

它不会出现在层次视图中。我尝试了很多方法,比如实现getTitle和getPagetitle,但都没有成功。当我将布局高度设置为100px时,我可以看到条形图,但没有选项卡。真的很高兴能得到任何帮助

先谢谢你

这是我的密码:

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

    <com.viewpagerindicator.TabPageIndicator
    android:id="@+id/titles"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

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


</RelativeLayout>

下面是片段:

package register;

import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.smartpos.R;
import com.example.smartpos.database.SmartPOSContentProvider;
import com.example.smartpos.database.TablesContract.Category;
import com.viewpagerindicator.CirclePageIndicator;
import com.viewpagerindicator.TabPageIndicator;
import com.viewpagerindicator.TitlePageIndicator;

public class AritcleButtonsFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor>{


    private CursorPagerAdapter<CategoryHolderFragment> adap;

    private ViewPager pager;

    public AritcleButtonsFragment(){

    }

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

        String[] projection = {Category.COLUMN_NAME_CATEGORY_ID,Category.COLUMN_NAME_TITLE };


        View view = inflater.inflate(R.layout.article_buttons,container, false);

        adap = new CursorPagerAdapter<CategoryHolderFragment>(getChildFragmentManager(), CategoryHolderFragment.class, projection, null);

        pager = (ViewPager)view.findViewById(R.id.pager);
        pager.setAdapter(adap);
        pager.setOffscreenPageLimit(3);
        pager.setBackgroundColor(Color.GRAY);

        TabPageIndicator indicator =(TabPageIndicator)view.findViewById(R.id.titles);
        indicator.setViewPager(pager);
        indicator.setBackgroundColor(Color.BLUE);

        getLoaderManager().initLoader(0, savedInstanceState, this);

        return view;        
    }

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

    @Override
    public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
        String[] projection = { Category.COLUMN_NAME_CATEGORY_ID, Category.COLUMN_NAME_TITLE };
        CursorLoader cursorLoader = new CursorLoader(getActivity().getApplicationContext(),
        SmartPOSContentProvider.CONTENT_URI_CATEGORIES, projection, null, null, null);

          return cursorLoader;
    }
    @Override
    public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
        // TODO Auto-generated method stub
        adap.swapCursor(arg1);

    }
    @Override
    public void onLoaderReset(Loader<Cursor> arg0) {
        // TODO Auto-generated method stub
        adap.swapCursor(null);
    }
}
包寄存器;
导入android.database.Cursor;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.LoaderManager;
导入android.support.v4.app.LoaderManager.LoaderCallbacks;
导入android.support.v4.content.CursorLoader;
导入android.support.v4.content.Loader;
导入android.support.v4.view.ViewPager;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入com.example.smartpos.R;
导入com.example.smartpos.database.SmartPOSContentProvider;
导入com.example.smartpos.database.tableContract.Category;
导入com.viewpagerindicator.CirclePageIndicator;
导入com.viewpagerindicator.TabPageIndicator;
导入com.viewpagerindicator.TitlePageIndicator;
公共类AritcleButtonsFragment扩展片段实现LoaderManager.LoaderCallbacks{
专用游标管理器适配器adap;
私人寻呼机;
公共AritcleButtonsFragment(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
String[]projection={Category.COLUMN\u NAME\u Category\u ID,Category.COLUMN\u NAME\u TITLE};
视图=充气机。充气(右布局。物品按钮,容器,假);
adap=新的CursorPagerAdapter(getChildFragmentManager(),CategoryHolderFragment.class,投影,null);
pager=(ViewPager)view.findViewById(R.id.pager);
寻呼机设置适配器(adap);
pager.setOffscreenPageLimit(3);
寻呼机。背景颜色(颜色。灰色);
TabPageIndicator=(TabPageIndicator)view.findViewById(R.id.titles);
指示器。设置视图寻呼机(寻呼机);
指示灯.背景色(颜色.蓝色);
getLoaderManager().initLoader(0,savedInstanceState,this);
返回视图;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@凌驾
公共加载器onCreateLoader(int arg0,Bundle arg1){
字符串[]投影={Category.COLUMN\u NAME\u Category\u ID,Category.COLUMN\u NAME\u TITLE};
CursorLoader CursorLoader=新的CursorLoader(getActivity().getApplicationContext(),
SmartPOSContentProvider.CONTENT\u URI\u类别、投影、null、null、null);
返回游标装入器;
}
@凌驾
公共void onLoadFinished(加载器arg0,光标arg1){
//TODO自动生成的方法存根
adap.swapCursor(arg1);
}
@凌驾
公共void onLoaderReset(加载程序arg0){
//TODO自动生成的方法存根
adap.swapCursor(空);
}
}
和我的适配器:

package register;

import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;

public class CursorPagerAdapter<F extends Fragment> extends
        FragmentStatePagerAdapter {
    private final Class<F> fragmentClass;
    private final String[] projection;
    private Cursor cursor;

    public CursorPagerAdapter(FragmentManager fm, Class<F> fragmentClass,
            String[] projection, Cursor cursor) {
        super(fm);
        this.fragmentClass = fragmentClass;
        this.projection = projection;
        this.cursor = cursor;
    }

    @Override
    public F getItem(int position) {
        if (cursor == null) 
            return null;

        cursor.moveToPosition(position);
        F frag;
        try {
            frag = fragmentClass.newInstance();
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }
        Bundle args = new Bundle();
        for (int i = 0; i < projection.length; ++i) {
            args.putString(projection[i], cursor.getString(i));
        }
        frag.setArguments(args);
        return frag;
    }

    @Override
    public int getCount() {
        if (cursor == null)
            return 0;
        else
            return cursor.getCount();
    }

    public void swapCursor(Cursor c) {
        if (cursor == c)
            return;

        this.cursor = c;
        notifyDataSetChanged();
    }

    public Cursor getCursor() {
        return cursor;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        cursor.moveToPosition(position);
        String title = cursor.getString(1);
        return title;

    }


    public String getTitle(int position) {
        cursor.moveToPosition(position);
        String title = cursor.getString(1);
        return title;

    }
}``
包寄存器;
导入android.database.Cursor;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.app.FragmentStatePagerAdapter;
公共类CursorPagerAdapter扩展
碎片雷达{
私人期末班,零碎班;
私有最终字符串[]投影;
私有游标;
公共游标管理器适配器(FragmentManager fm,类fragmentClass,
字符串[]投影,光标){
超级(fm);
this.fragmentClass=fragmentClass;
这个。投影=投影;
this.cursor=游标;
}
@凌驾
公共F getItem(int位置){
if(游标==null)
返回null;
光标。移动位置(位置);
F弗拉格;
试一试{
frag=fragmentClass.newInstance();
}捕获(例外情况除外){
抛出新的运行时异常(ex);
}
Bundle args=新Bundle();
对于(int i=0;i
在您的xml上尝试以下操作:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        />

<com.viewpagerindicator.TabPageIndicator
        android:id="@+id/titles"
        android:padding="10dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent" 
        />
</LinearLayout>


谢谢您的建议。当我使用xml布局时,应用程序崩溃。它表示ViewPager不能转换为TabPageIndicator。但是我没有更改Id,所以有点困惑为什么会发生这种情况。你能在Eclipse中清理你的项目吗。tabpageindicator的栏现在可见。但仍然没有“页面标题”。我想可能是造型的原因吧。但我真的不知道我能在这里改变什么。