Android中的自定义操作栏?

时间:2014-11-03 09:22:59

标签: android android-fragments android-actionbar

我开发了一个Android应用程序,它有4个TabHost,它们都是碎片。

我知道如何在MainActivity中自定义ActionBar

但问题是如何根据不同ActionBar s中的4个不同TabHost定制我的Fragment

这是我的tabHost代码 -

public class MainActivity extends Activity {
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


    /** Creating ANDROID Tab */
    Tab tab = actionBar.newTab()
            //.setText("Android")

            .setTabListener(new CustomTabListener<PlayFragment01>(this, "play", 
    PlayFragment01.class))
            .setIcon(R.drawable.playtabhosticon);

    actionBar.addTab(tab);


    /** Creating APPLE Tab */
    Tab tab1 = actionBar.newTab()
            //.setText("Apple")
            .setTabListener(new CustomTabListener<VenueFragment01>(this, "venu", 
    VenueFragment01.class))
            .setIcon(R.drawable.venutabhosticon);

    actionBar.addTab(tab1);  

    /** Creating APPLE Tab */
    Tab tab3 = actionBar.newTab()
            //.setText("Apple")
            .setTabListener(new CustomTabListener<SocialFragment01>(this, "social", SocialFragment01.class))
            .setIcon(R.drawable.socialtabhosticon);

    actionBar.addTab(tab3);  

    /** Creating APPLE Tab */
    Tab tab4 = actionBar.newTab()
            //.setText("Apple")
            .setTabListener(new CustomTabListener<ActivityFragment01>(this, "activity",         
   ActivityFragment01.class))
            .setIcon(R.drawable.actionbartabhosticon);

    actionBar.addTab(tab4);  



}   
}

这是我的第一个片段代码 -

package in.wptrafficanalyzer.actionbarnavtab;
 /** This is a listfragment class */
 public class PlayFragment01 extends Fragment {

/** An array of items to display in ArrayList */



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)    
{
    /** Creating array adapter to set data in listview */
    View rootView = inflater.inflate(R.layout.fragment_play, container, false);         
    //new DownloadJSON().execute();

    ActionBar actionBar = getActivity().getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    getActivity().getActionBar().setBackgroundDrawable(
            new ColorDrawable(Color.parseColor("#0077d1")));
    ActionBar mActionBar = getActivity().getActionBar();
    getActivity().getActionBar().setIcon(
       new ColorDrawable(getResources().getColor(android.R.color.transparent)));    
    mActionBar.setDisplayShowHomeEnabled(true);
    mActionBar.setDisplayShowTitleEnabled(false);
    LayoutInflater mInflater = LayoutInflater.from(this);
    View mCustomView = mInflater.inflate(R.layout.custom_actionbar2, null);
    mActionBar.setCustomView(mCustomView);
    mActionBar.setDisplayShowCustomEnabled(true);

    return rootView;
}
}

3 个答案:

答案 0 :(得分:0)

您提出的问题不是很明确,但您可以使用getActivity().getActionBar()从片段中获取ActionBar实例。

答案 1 :(得分:0)

ActionBar.setNavigationMode()TabHost现已弃用。

API-21中引入的新ToolBar功能更强大。

但是既然你要求一个解决方案,这里有一个来自Google SlidingTabLayout的简单解决方案: 这就像PagerTabStrip,您可以轻松自定义并且工作得很好。

当然,它适用于ViewPagerFragments

答案 2 :(得分:0)

在我看来,你应该阅读这篇文章,这样你就可以了解创建片段的基本想法。

http://developer.android.com/guide/components/fragments.html

试试这个示例代码..此示例代码包含3个选项卡,首先尝试理解此代码,然后您可以使用4个选项卡制作自己的应用程序

http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

同时尝试修改您的问题,目前还不清楚,发布错​​误也不错