4

我已经实现了一个操作栏,但它的标题没有显示出来。我的应用程序也有两个片段,标题应该根据显示的片段而变化。

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

     AppSectionsPagerAdapter mAppSectionsPagerAdapter;

     ViewPager mViewPager;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

       setupActionBar();

        mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager());


        // user swipes between sections.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mAppSectionsPagerAdapter);
        mViewPager.setOnPageChangeListener(new OnPageChangeListener() 
        {
            public void onPageSelected(int position) 
            {
            }

            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) 
            {

            }

            public void onPageScrollStateChanged(int state) 
            {
                if (state == ViewPager.SCROLL_STATE_DRAGGING)
                {

                }
                if (state == ViewPager.SCROLL_STATE_IDLE)
                {

                }
            }
        });


    }


    public static class AppSectionsPagerAdapter extends FragmentPagerAdapter {



        public AppSectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int i) {
            switch (i) {
                case 0:


                    return new AllPatient();

               case 1:

                    //Intent intent = new Intent(MainActivity.this,abc.class);
                     return new LaunchpadSectionFragment();



            }
            return null;
        }

        @Override
        public int getCount() {
            return 2;

        }



    }




    private void setupActionBar() {
        ActionBar actionBar = getActionBar();
        //actionBar.setDisplayShowHomeEnabled(false);


       actionBar.setBackgroundDrawable(new ColorDrawable(Color.WHITE));

       actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
                ActionBar.DISPLAY_SHOW_CUSTOM);
       ViewGroup v = (ViewGroup)LayoutInflater.from(this)
               .inflate(R.layout.header, null);
        actionBar.setCustomView(v,
                new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,
                        ActionBar.LayoutParams.WRAP_CONTENT,
                        Gravity.CENTER_VERTICAL | Gravity.RIGHT));
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle(getTitle());

    } 


}

还请告诉我如何在操作栏中的图标之间添加分隔线。提前致谢。

4

4 回答 4

3

像这样添加节目标题标志

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM);
于 2015-03-25T15:17:43.143 回答
3

尝试更改此行:

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM);

通过这个:

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME, ActionBar.DISPLAY_SHOW_CUSTOM);
于 2013-06-05T10:53:52.560 回答
1

我认为问题在于您要添加一个宽度为 MATCH_PARENT 的自定义视图,并且在这种情况下,Android 会删除操作栏标题(但不是主页图标)。这不是很合乎逻辑,但这就是我在我的应用程序中看到的行为。将宽度设置为 WRAP_CONTENT 会产生同样的问题。解决方案是给自定义视图一个固定宽度,或者如果您需要宽度从一个活动到另一个活动,以编程方式计算宽度并将其设置为每个活动的新固定宽度。

于 2014-08-31T23:44:20.280 回答
1

这绝对应该有效

getSupportActionBar().setDisplayShowTitleEnabled(true);

getSupportActionBar().setTitle(title);

于 2021-06-15T07:50:58.730 回答