Android ActionBar选项卡的宽度不同

Android ActionBar选项卡的宽度不同,android,android-fragments,android-tabs,Android,Android Fragments,Android Tabs,我正在尝试实现选项卡,这些选项卡将在我的项目的一个活动中引入片段。问题是标签在不同的设备上占据不同的宽度大小 示例(nexus 7):选项卡未占据全部宽度 示例2(galaxy s5):选项卡可水平滚动,因此它们占据的宽度超过了操作栏的全宽 SecondActivity.java: activity_second.xml: 我希望由getActionBar()初始化的ActionBar是设备的全宽。我尝试创建一个自定义操作栏,但遇到了同样的问题。操作栏选项卡现在已被正式弃用。现在应该使用TabL

我正在尝试实现选项卡,这些选项卡将在我的项目的一个活动中引入片段。问题是标签在不同的设备上占据不同的宽度大小

示例(nexus 7):选项卡未占据全部宽度

示例2(galaxy s5):选项卡可水平滚动,因此它们占据的宽度超过了操作栏的全宽

SecondActivity.java:

activity_second.xml:


我希望由
getActionBar()
初始化的ActionBar是设备的全宽。我尝试创建一个自定义操作栏,但遇到了同样的问题。

操作栏选项卡现在已被正式弃用。现在应该使用TabLayout构建选项卡。 这个链接可能会有所帮助

ActionBar选项卡现在已被正式弃用。现在应该使用TabLayout构建选项卡。 这个链接可能会有所帮助

谢谢您的回复。尽管ActionBar选项卡已被弃用,但我仍然希望使用它来解决这个问题,因为这是一个大项目,重新构建所有内容都很痛苦。在这种情况下可以做些什么吗?您可能想检查一下。谢谢您的回复。尽管ActionBar选项卡已被弃用,但我仍然希望使用它来解决这个问题,因为这是一个大项目,重新构建所有内容都很痛苦。在这种情况下可以做些什么吗?你可能想检查一下。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_second);

    mViewPager = (ViewPager) findViewById(R.id.pager);
    mActionBar = getActionBar();
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager(), mDate);

    mAdapter.setCurrentIndex(mSelectedTab);

    mViewPager.setAdapter(mAdapter);
    mActionBar.setDisplayShowHomeEnabled(false);
    mActionBar.setDisplayShowTitleEnabled(false);
    mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);
    mViewPager.setPagingEnabled(false);

    // Adding Tabs
    ActionBar.Tab firstTab = mActionBar
            .newTab()
            .setIcon(R.drawable.first_selector)
            .setTabListener(this);

    ActionBar.Tab secondTab = mActionBar
            .newTab()
            .setIcon(R.drawable.second_selector)
            .setTabListener(this);

    ActionBar.Tab thirdTab = mActionBar
            .newTab()
            .setIcon(R.drawable.third_selector)
            .setTabListener(this);

    mActionBar.addTab(firstTab);
    mActionBar.addTab(secondTab);
    mActionBar.addTab(thirdTab);
    switch (mSelectedTab) {
        case 0:
            mActionBar.selectTab(firstTab);
            break;
        case 1:
            mActionBar.selectTab(secondTab);
            break;
        case 2:
            mActionBar.selectTab(thirdTab);
            break;
    }

    mViewPager.setOffscreenPageLimit(3);

    LayoutInflater mInflater = (LayoutInflater) this
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View mCustomView = mInflater.inflate(R.layout.my_layout_header, null);
    mActionBar.setCustomView(mCustomView);
    mActionBar.setDisplayShowCustomEnabled(true);
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_messages_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true">

    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v4.view.ViewPager>
</RelativeLayout>
public class TabsPagerAdapter extends FragmentStatePagerAdapter {
    private String mDate;
    private FragmentManager mFragmentManager;
    private int mCurrentIndex;
    SparseArray<Fragment> registeredFragments;

    public TabsPagerAdapter(FragmentManager fm, String date) {
        super(fm);
        mFragmentManager = fm;
        this.mDate = date;
        initializeFragments();
    }

    private void initializeFragments(){
        registeredFragments = new SparseArray<Fragment>();

        FirstFragment firstFragment = FirstFragment.newInstance(mDate);
        registeredFragments.put(0, firstFragment);
        SecondFragment secondFragment = SecondFragment.newInstance(mDate);
        registeredFragments.put(1, secondFragment);
        ThirdFragment thirdFragment = ThirdFragment.newInstance(mDate);
        registeredFragments.put(2, thirdFragment);
    }

    @Override
    public Fragment getItem(int index) {
        return registeredFragments.get(index);
    }

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

    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }

    public int getCurrentIndex() {
        return mCurrentIndex;
    }

    public void setCurrentIndex(int currentIndex) {
        this.mCurrentIndex = currentIndex;
    }
}
buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}


//Put Fabric plugin after Android plugin
apply plugin: 'io.fabric'

android {
    compileSdkVersion 25
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.myapplication.android"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 9
        versionName "1.3.0"

        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    useLibrary 'org.apache.http.legacy'
    dexOptions{
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

    compile "com.android.support:appcompat-v7:25.0.+"
    compile 'com.google.android.gms:play-services:10.0.1'
    compile 'it.sephiroth.android.library.horizontallistview:hlistview:1.2.2'
    compile 'com.anjlab.android.iab.v3:library:1.0.+@aar'
    compile project(':libraries:SlidingMenu')
    compile project(':PullToRefresh')
    compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
        transitive = true;
    }
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:design:25.0.1'
}