2013-06-05 2 views
4

Я реализовал панель действий, но ее заголовок не отображается. Также мое приложение имеет два фрагмента, название должно изменяться в соответствии с отображаемым фрагментом.Название ActionBar не отображается

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()); 

    } 


} 

Просьба также сообщить, как добавить разделители между значками в панели действий. Спасибо заранее.

+0

вы пытались с Color.Black? – Blackbelt

+0

Да, я сделал. Но ничего не случилось. –

+0

удалите вызов actionBar.setCustomView и проверьте, не имеет ли он никакой разницы – Blackbelt

ответ

2

Попробуйте изменить эту строку:

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

К этому:

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME, ActionBar.DISPLAY_SHOW_CUSTOM); 
+0

Thanx, но только логотип и название отображаются не значками. –

+0

У вас есть попытка с этим: ?: actionBar.setDisplayOptions (ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME, ActionBar.DISPLAY_SHOW_CUSTOM) '? –

+0

Nopes, название не отображается. Thnx –

1

Я думаю, что проблема в том, что вы добавляете пользовательский вид с шириной MATCH_PARENT и Android удаляет действие (но не значок дома) в этом случае. Это не очень логично, но это поведение, которое я вижу в своем приложении. Установка ширины в WRAP_CONTENT создает ту же проблему. Решение состоит в том, чтобы дать настраиваемому представлению фиксированную ширину, или если вам нужно, чтобы ширина варьировалась от одной активности к другой, вычислить ширину программно и установить ее на новую фиксированную ширину для каждого вида деятельности.

1

Добавить флаг название шоу, как так

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM); 
Смежные вопросы