2013-11-03 220 views
0

在我的android应用程序中,我实现了带有可滑动视图的标签布局。这里是我的MainActivity类别:在操作栏下方添加标签

import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 


public class CustomerComplainActivity extends FragmentActivity implements ActionBar.TabListener { 

private ViewPager viewPager; 
private TabsPagerAdapter mAdapter; 
private ActionBar actionBar; 
private String[] tabs = { "New Complain", "Previous Complains" }; 

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

    // Initialization 
    viewPager = (ViewPager) findViewById(R.id.pager); 
    actionBar = getActionBar(); 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    viewPager.setAdapter(mAdapter); 
    //actionBar.setDisplayHomeAsUpEnabled(false); 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 





    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(this)); 
    } 

    /** 
    * on swiping the viewpager make respective tab selected 
    * */ 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      actionBar.setSelectedNavigationItem(position); 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 
} 

@Override 
public void onTabReselected(Tab tab, FragmentTransaction ft) { 
} 

@Override 
public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    // on tab selected 
    // show respected fragment view 
    viewPager.setCurrentItem(tab.getPosition()); 
} 

@Override 
public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
} 

}

这是我TabPager适配器类:

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

public class TabsPagerAdapter extends FragmentPagerAdapter { 

public TabsPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int index) { 

    switch (index) { 
    case 0: 
     // Top Rated fragment activity 
     return new NewComplain(); 
    case 1: 
     return new PreviousComplains(); 
    } 

    return null; 
} 

@Override 
public int getCount() { 
    // get item count - equal to number of tabs 
    return 2; 
} 

}

这是我activity_main.xml中的文件。

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/pager" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".AdminMainActivity" > 

<android.support.v4.view.PagerTitleStrip 
    android:id="@+id/pager_title_strip" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="top" 
    android:background="#800000" 
    android:paddingBottom="4dp" 
    android:paddingTop="5dp" 
    android:textColor="#fff" 
    android:textSize="18dp" /> 

这工作,但问题是该选项卡添加到actiob酒吧如下。

enter image description here

但我想补充的动作栏下面这些选项卡。我会很感激,如果任何人plz是如此友好,足以解释我该如何解决这个问题。

Thanx提前

+0

这是使用ActionBar.NAVIGATION_MODE_TABS使用操作栏时的默认行为。你将不得不看看不同的解决方案,即不使用操作栏的标签。 – Szymon

+0

但我遵循[this](http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/)教程。它工作正常。但是,当我在我的应用程序中使用它并没有。 – Rose18

+0

你在哪个设备上测试它?或者在模拟器上?正常行为是:如果有足够的空间(在平板电脑上或在横向模式下),则选项卡将显示在操作栏中。否则,它们会显示在操作栏下方。 – Szymon

回答

1

我有同样的问题。我用

替换该行

actionBar.setHomeButtonEnabled(false); 

,你的问题就解决了找到了解决办法。