下面的操作栏标签 [英] Tabs below action bar

查看:150
本文介绍了下面的操作栏标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发适用于Android 4.3和一直与我的code的一个问题,我似乎无法弄清楚。我一直在寻找答案了一段时间,所有我能找到的人希望我目前的状况,而我希望他们的窃听计划。

我有3个标签,我已经放在操作栏中通过Android的教程标签的动作条。

应该怎么发生的: 这些选项卡应该出现在操作栏

会发生什么,而不是: 下面的操作栏的选项卡显示

我的问题是:
1。如何设置这些选项卡上显示的动作条,不低于
2。如果随后的1,我怎么可以设置标签的大小?例如,使得3片一起采取动作条(由宽)

的三分之一

我的code:

  mPager =(ViewPager)findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

        最后的动作条动作条= getActionBar();
        actionBar.show();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.TabListener tabListener =新ActionBar.TabListener(){
            公共无效onTabSelected(ActionBar.Tab选项卡,FragmentTransaction英尺){
                 //显示给定的标签
                mPager.setCurrentItem(tab.getPosition());
            }

            公共无效onTabUnselected(ActionBar.Tab选项卡,FragmentTransaction英尺){
                //隐藏指定的标签
            }

            公共无效onTabReselected(ActionBar.Tab选项卡,FragmentTransaction英尺){
                //可能忽略此事件
            }
        };

        mPager.setOnPageChangeListener(
                新ViewPager.SimpleOnPageChangeListener(){
                    @覆盖
                    公共无效onPageSelected(INT位置){
                        //当页面之间刷卡,选择
                        //相应的选项卡。
                        actionBar.setSelectedNavigationItem(位置);
                    }
                });
        //添加3个标签,指定标签的文本和TabListener
        actionBar.addTab(
                    actionBar.newTab()
                            .setText(A)
                            .setTabListener(tabListener));
        actionBar.addTab(
                actionBar.newTab()
                        .setText(B)
                        .setTabListener(tabListener));
        actionBar.addTab(
                actionBar.newTab()
                        .setText(C)
                        .setTabListener(tabListener));
 

解决方案

私人ViewPager mPager; 私人PagerAdapter mPagerAdapter; 私有静态最终诠释NUM_PAGES = 3;

在的onCreate()

最后的动作条动作条= getActionBar();     actionBar.setDisplayHomeAsUpEnabled(真正的);     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);     mPager =(ViewPager)findViewById(R.id.pager);     mPagerAdapter =新ScreenSlidePagerAdapter(getSupportFragmentManager());     mPager.setAdapter(mPagerAdapter);     mPager.setOnPageChangeListener(新ViewPager.SimpleOnPageChangeListener(){         @覆盖         公共无效onPageSelected(INT位置){             actionBar.setSelectedNavigationItem(位置);         }     });     ActionBar.TabListener tabListener =新ActionBar.TabListener(){         @覆盖         公共无效onTabReselected(标签选项卡,                 android.app.FragmentTransaction英尺){         }         @覆盖         公共无效onTabSelected(标签选项卡,                 android.app.FragmentTransaction英尺){             mPager.setCurrentItem(tab.getPosition());         }         @覆盖         公共无效onTabUnselected(标签选项卡,                 android.app.FragmentTransaction英尺){         }     };     的for(int i = 0; I< mPagerAdapter.getCount();我++){         actionBar.addTab(动作条                 。新标签()                 .setText(mPagerAdapter.getPageTitle(I))                 .setIcon(                         ((ScreenSlidePagerAdapter)mPagerAdapter)                                 .getPageIcon(i))的                 .setTabListener(tabListener));     } 私有类ScreenSlidePagerAdapter扩展FragmentStatePagerAdapter {     公共ScreenSlidePagerAdapter(FragmentManager FM){         超(FM);     }     @覆盖     公共片段的getItem(INT位置){         开关(位置){         情况下0:             返回Fragment.instantiate(MainActivity.this,                     Fragment_sports.class.getName());         情况1:             返回Fragment.instantiate(MainActivity.this,                     Fragment_casino.class.getName());         案例2:             返回Fragment.instantiate(MainActivity.this,                     Fragment_live_betting.class.getName());         默认:             打破;         }         返回null;     }     @覆盖     公众诠释getCount将(){         返回NUM_PAGES;     }     @覆盖     公共CharSequence的getPageTitle(INT位置){         字符串tabLabel = NULL;         开关(位置){         情况下0:             tabLabel =运动;             打破;         情况1:             tabLabel =赌场;             打破;         案例2:             tabLabel =滚球投注;             打破;         }         返回tabLabel;     }     公众诠释getPageIcon(INT位置){         INT标识= 0;         开关(位置){         情况下0:             ID = R.drawable.icon_all_sports_d;             打破;         情况1:             ID = R.drawable.icon_favourites_d;             打破;         案例2:             ID = R.drawable.icon_live_d;             打破;         默认:             打破;         }         返回ID;     } }

和您的 main_activity.xml

< RelativeLayout的的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android     的xmlns:工具=htt​​p://schemas.android.com/tool​​s     机器人:layout_width =match_parent     机器人:layout_height =match_parent>     < android.support.v4.view.ViewPager         机器人:ID =@ + ID /寻呼机         机器人:layout_width =WRAP_CONTENT         机器人:layout_height =WRAP_CONTENT/> < / RelativeLayout的>

地址:

您应该替换该行:

actionBar.setDisplayHomeAsUpEnabled(真正的);

这样:

actionBar.setDisplayShowHomeEnabled(假); actionBar.setDisplayShowTitleEnabled(假);

I'm developing for Android 4.3 and been having a problem with my code that I can't seem to figure out. I've been looking for answers for a while and all I could find was people that want my current situation while I want their bugged program.

I have 3 tabs which I've placed in the action bar by Android's tutorial for tabs in ActionBar.

What is supposed to happen: The tabs should appear on the action bar

What happens instead: The tabs appear below the action bar

My questions are:
1. How can I set those tabs to show on the ActionBar and not below
2. If succeeding 1, how can I set the size of the tabs? for example making the 3 tabs together take one third of the ActionBar (by width)

My code:

mPager = (ViewPager)findViewById(R.id.pager);
        mPager.setAdapter(mAdapter);

        final ActionBar actionBar = getActionBar();
        actionBar.show();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        ActionBar.TabListener tabListener = new ActionBar.TabListener() {
            public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
                 // show the given tab
                mPager.setCurrentItem(tab.getPosition());
            }

            public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
                // hide the given tab
            }

            public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
                // probably ignore this event
            }
        };

        mPager.setOnPageChangeListener(
                new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {
                        // When swiping between pages, select the
                        // corresponding tab.
                        actionBar.setSelectedNavigationItem(position);
                    }
                });
        // Add 3 tabs, specifying the tab's text and TabListener
        actionBar.addTab(
                    actionBar.newTab()
                            .setText("A")
                            .setTabListener(tabListener));
        actionBar.addTab(
                actionBar.newTab()
                        .setText("B")
                        .setTabListener(tabListener));
        actionBar.addTab(
                actionBar.newTab()
                        .setText("C")
                        .setTabListener(tabListener));

解决方案

private ViewPager mPager;
private PagerAdapter mPagerAdapter;
private static final int NUM_PAGES = 3;

in onCreate()

final ActionBar actionBar = getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);

    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    mPager = (ViewPager) findViewById(R.id.pager);
    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    mPager.setAdapter(mPagerAdapter);
    mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            actionBar.setSelectedNavigationItem(position);
        }
    });

    ActionBar.TabListener tabListener = new ActionBar.TabListener() {

        @Override
        public void onTabReselected(Tab tab,
                android.app.FragmentTransaction ft) {

        }

        @Override
        public void onTabSelected(Tab tab,
                android.app.FragmentTransaction ft) {
            mPager.setCurrentItem(tab.getPosition());
        }

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

    };

    for (int i = 0; i < mPagerAdapter.getCount(); i++) {
        actionBar.addTab(actionBar
                .newTab()
                .setText(mPagerAdapter.getPageTitle(i))
                .setIcon(
                        ((ScreenSlidePagerAdapter) mPagerAdapter)
                                .getPageIcon(i))
                .setTabListener(tabListener));
    }

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0:
            return Fragment.instantiate(MainActivity.this,
                    Fragment_sports.class.getName());
        case 1:
            return Fragment.instantiate(MainActivity.this,
                    Fragment_casino.class.getName());
        case 2:
            return Fragment.instantiate(MainActivity.this,
                    Fragment_live_betting.class.getName());
        default:
            break;
        }
        return null;
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        String tabLabel = null;
        switch (position) {
        case 0:
            tabLabel = " Sports";
            break;
        case 1:
            tabLabel = "Casino";
            break;
        case 2:
            tabLabel = "Live Betting";
            break;
        }

        return tabLabel;
    }

    public int getPageIcon(int position) {
        int id = 0;
        switch (position) {
        case 0:
            id = R.drawable.icon_all_sports_d;
            break;
        case 1:
            id = R.drawable.icon_favourites_d;
            break;
        case 2:
            id = R.drawable.icon_live_d;
            break;
        default:
            break;
        }
        return id;

    }
}

and your main_activity.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

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

</RelativeLayout>

ADD:

You should replace this line:

actionBar.setDisplayHomeAsUpEnabled(true);

to this:

actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);

这篇关于下面的操作栏标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆