下面的操作栏标签 [英] Tabs below action bar
问题描述
我正在开发适用于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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人: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屋!