Android ViewPagerIndicator:选项卡PagerIndicator不可见
我现在正在努力使用viewpagerindicator。当我使用TitlePageIndicator时,一切正常。但是当我尝试使用TabPageIndicator时,我看不到它 它不会出现在层次视图中。我尝试了很多方法,比如实现getTitle和getPagetitle,但都没有成功。当我将布局高度设置为100px时,我可以看到条形图,但没有选项卡。真的很高兴能得到任何帮助 先谢谢你 这是我的密码: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"?> <
<?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的栏现在可见。但仍然没有“页面标题”。我想可能是造型的原因吧。但我真的不知道我能在这里改变什么。