2015-02-16 6 views
0

У меня есть класс активности, в котором есть ящик для навигации. Я хочу изменить цвет панели действий, когда я перехожу из одного фрагмента в другой из навигационного ящика. Как это сделать.Навигация Ящик: изменение цвета панели действий

Мой код похож на этот: http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/

Plz Помощь.

ответ

0

Вы можете сделать это с помощью android.support.v7.widget.Toolbar. Создайте файл макета, как это:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:background="#cc00ff" 
    android:layout_height="?android:attr/actionBarSize" /> 

Чтобы включить макет панели инструментов в макете сделать это как

<include android:id="@+id/toolBar" layout="@layout/custom_toolbar" /> 

Тогда для каждого фрагмента, который вы возвращаете в методе displayView() вы можете изменить его следующим образом:

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     ((ActionBarActivity) getActivity()).getSupportActionBar().setColor(Color.GREEN); 
     super.onActivityCreated(savedInstanceState); 

    } 

Тогда ваш HostActivity который MainActivity вы можете настроить панель инструментов, как:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar tb = (Toolbar)findViewById(R.id.toolBar); 
     setSupportActionBar(tb); 
     mTitle = mDrawerTitle = getTitle(); 

     // load slide menu items 
     navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); 

     // nav drawer icons from resources 
     navMenuIcons = getResources() 
       .obtainTypedArray(R.array.nav_drawer_icons); 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.list_slidermenu); 

     navDrawerItems = new ArrayList<NavDrawerItem>(); 

     // adding nav drawer items to array 
     // Home 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1))); 
     // Find People 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1))); 
     // Photos 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1))); 
     // Communities, Will add a counter here 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22")); 
     // Pages 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1))); 
     // What's hot, We will add a counter here 
     navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+")); 


     // Recycle the typed array 
     navMenuIcons.recycle(); 

     mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); 

     // setting the nav drawer list adapter 
     adapter = new NavDrawerListAdapter(getApplicationContext(), 
       navDrawerItems); 
     mDrawerList.setAdapter(adapter); 

     // enabling action bar app icon and behaving it as toggle button 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 

     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
       R.drawable.ic_drawer, //nav menu toggle icon 
       R.string.app_name, // nav drawer open - description for accessibility 
       R.string.app_name // nav drawer close - description for accessibility 
     ) { 
      public void onDrawerClosed(View view) { 
       getActionBar().setTitle(mTitle); 
       // calling onPrepareOptionsMenu() to show action bar icons 
       invalidateOptionsMenu(); 
      } 

      public void onDrawerOpened(View drawerView) { 
       getActionBar().setTitle(mDrawerTitle); 
       // calling onPrepareOptionsMenu() to hide action bar icons 
       invalidateOptionsMenu(); 
      } 
     }; 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 

     if (savedInstanceState == null) { 
      // on first time display view for first nav item 
      displayView(0); 
     } 
    } 

Сделайте MainActivity продлить ActionBarActivity вместо деятельности и в вашей styles.xml изменить вашу тему:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <!-- Customize your theme here. --> 
    </style> 

Надеется, что это помогает !!!

+0

Вы можете указать, где добавить компоненты xml, которые вы упомянули. – andrDev

+0

У меня ошибка в ошибке стиля: Ошибка получения родительского элемента: ресурс не найден, который соответствует указанному имени «Theme.AppCompat.Light.NoActionBar». – andrDev

+0

также имеет следующую ошибку: Метод setColor (int) не определен для типа ActionBar – andrDev

Смежные вопросы