在ActionBarActivity的底部设置ActionBar选项卡

你好我是Android的noob。

我正在使用appcompat支持库在ActionBarActivity添加选项卡。 我已经写了代码添加,但标签显示在顶部看到它的截图。 我想设置这些显示在底部的Tabs

任何想法为什么这样?

 private ActionBar mActionBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // find the action bar mActionBar = getSupportActionBar(); // First Tab of the Activity ActionBar.Tab mTab = mActionBar.newTab().setText("First Tab").setTabListener(this); mActionBar.addTab(mTab); mActionBar.selectTab(mTab); // Second Tab of the Activity mTab = mActionBar.newTab().setText("Second Tab").setTabListener(this); mActionBar.addTab(mTab); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onTabReselected(Tab arg0, FragmentTransaction arg1) { // TODO Auto-generated method stub } @Override public void onTabSelected(Tab tab, FragmentTransaction fragmentTrasaction) { if(tab.getPosition() == 0) { fragmentTrasaction.replace(R.id.container, new FirstFragment()); } else { fragmentTrasaction.replace(R.id.container, new SecondFragment()); } } @Override public void onTabUnselected(Tab arg0, FragmentTransaction arg1) { // TODO Auto-generated method stub } 

截图

在这里输入图像描述

您可以在屏幕的任何位置创build自己的TabView Bar,例如在底部完美地打开片段,在tags_icon.xml中进行简单的自定义视图

这是底部的TabView

主要活动类

 import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.widget.ImageView; import android.widget.TabHost; import android.widget.TextView; public class TagsActivity extends Activity { public static final String M_CURRENT_TAB = "M_CURRENT_TAB"; private TabHost mTabHost; private String mCurrentTab; public static final String TAB_TAGS = "TAB_TAGS"; public static final String TAB_MAP = "TAB_MAP"; public static final String TAB_SETTINGS = "TAB_SETTINGS"; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_ACTION_BAR); getActionBar().hide(); setContentView(R.layout.tags_activity); mTabHost = (TabHost) findViewById(android.R.id.tabhost); mTabHost.setup(); if (savedInstanceState != null) { mCurrentTab = savedInstanceState.getString(M_CURRENT_TAB); initializeTabs(); mTabHost.setCurrentTabByTag(mCurrentTab); /* when resume state it's important to set listener after initializeTabs */ mTabHost.setOnTabChangedListener(listener); } else { mTabHost.setOnTabChangedListener(listener); initializeTabs(); } } private View createTabView(final int id, final String text) { View view = LayoutInflater.from(this).inflate(R.layout.tabs_icon, null); ImageView imageView = (ImageView) view.findViewById(R.id.tab_icon); imageView.setImageDrawable(getResources().getDrawable(id)); TextView textView = (TextView) view.findViewById(R.id.tab_text); textView.setText(text); return view; } /* create 3 tabs with name and image and add it to TabHost */ public void initializeTabs() { TabHost.TabSpec spec; spec = mTabHost.newTabSpec(TAB_TAGS); spec.setContent(new TabHost.TabContentFactory() { public View createTabContent(String tag) { return findViewById(R.id.realtabcontent); } }); spec.setIndicator(createTabView(R.drawable.tab_tag_drawable, getString(R.string.tab_tags))); mTabHost.addTab(spec); spec = mTabHost.newTabSpec(TAB_MAP); spec.setContent(new TabHost.TabContentFactory() { public View createTabContent(String tag) { return findViewById(R.id.realtabcontent); } }); spec.setIndicator(createTabView(R.drawable.tab_map_drawable, getString(R.string.tab_map))); mTabHost.addTab(spec); spec = mTabHost.newTabSpec(TAB_SETTINGS); spec.setContent(new TabHost.TabContentFactory() { public View createTabContent(String tag) { return findViewById(R.id.realtabcontent); } }); spec.setIndicator(createTabView(R.drawable.tab_settings_drawable, getString(R.string.tab_settings))); mTabHost.addTab(spec); } /* first time listener will be trigered immediatelly after first: mTabHost.addTab(spec); for set correct Tab in setmTabHost.setCurrentTabByTag ignore first call of listener */ TabHost.OnTabChangeListener listener = new TabHost.OnTabChangeListener() { public void onTabChanged(String tabId) { mCurrentTab = tabId; if (tabId.equals(TAB_TAGS)) { pushFragments(SearchFragment.getInstance(), false, false, null); } else if (tabId.equals(TAB_MAP)) { pushFragments(MapContainerFragment.getInstance(), false, false, null); } else if (tabId.equals(TAB_SETTINGS)) { pushFragments(SettingsFragment.getInstance(), false, false, null); } } }; /* Example of starting nested fragment from another fragment: Fragment newFragment = ManagerTagFragment.newInstance(tag.getMac()); TagsActivity tAct = (TagsActivity)getActivity(); tAct.pushFragments(newFragment, true, true, null); */ public void pushFragments(Fragment fragment, boolean shouldAnimate, boolean shouldAdd, String tag) { FragmentManager manager = getFragmentManager(); FragmentTransaction ft = manager.beginTransaction(); if (shouldAnimate) { ft.setCustomAnimations(R.animator.fragment_slide_left_enter, R.animator.fragment_slide_left_exit, R.animator.fragment_slide_right_enter, R.animator.fragment_slide_right_exit); } ft.replace(R.id.realtabcontent, fragment, tag); if (shouldAdd) { /* here you can create named backstack for realize another logic. ft.addToBackStack("name of your backstack"); */ ft.addToBackStack(null); } else { /* and remove named backstack: manager.popBackStack("name of your backstack", FragmentManager.POP_BACK_STACK_INCLUSIVE); or remove whole: manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); */ manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); } ft.commit(); } /* If you want to start this activity from another */ public static void startUrself(Activity context) { Intent newActivity = new Intent(context, TagsActivity.class); newActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(newActivity); context.finish(); } @Override public void onSaveInstanceState(Bundle outState) { outState.putString(M_CURRENT_TAB, mCurrentTab); super.onSaveInstanceState(outState); } @Override public void onBackPressed(){ super.onBackPressed(); } } 

tags_activity.xml

 <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0"/> <FrameLayout android:id="@android:id/realtabcontent" android:background="@drawable/bg_main_app_gradient" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> <TabWidget android:id="@android:id/tabs" android:background="#EAE7E1" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0"/> </LinearLayout> </TabHost> 

tags_icon.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/tabsLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bg_tab_gradient" android:gravity="center" android:orientation="vertical" tools:ignore="contentDescription" > <ImageView android:id="@+id/tab_icon" android:layout_marginTop="4dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/tab_text" android:layout_marginBottom="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/tab_text_color"/> </LinearLayout> 

在这里输入图像描述