2014-01-08 58 views
0

我在我的应用程序中使用Navigation Drawer。我想更改导航抽屉中的Tittle,并且想要在标题顶部设置“后退”按钮选项。如何在导航抽屉中进行自定义设计?

Three Thing i want to change in the header. 
1.Remove the ic_launcher image 
2.custom background theme 
3.Add a back button on the header 

Image Link

了Java文字我想添加一个返回按钮,这样我可以在我的应用程序提供后退的功能后。

我的完整代码

public class MainActivity extends FragmentActivity { 
    private DrawerLayout mDrawerLayout; 
    private ListView mDrawerList; 
    private ActionBarDrawerToggle mDrawerToggle; 
    private String mTitle = ""; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mTitle = "Subjects"; 
     getActionBar().setTitle(mTitle); 


     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.drawer_list); 
     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
       R.drawable.white_bar, R.string.drawer_open, 
       R.string.drawer_close) { 

      /** Called when drawer is closed */ 
      public void onDrawerClosed(View view) { 
       getActionBar().setTitle(mTitle); 
       invalidateOptionsMenu(); 
      } 

      /** Called when a drawer is opened */ 
      public void onDrawerOpened(View drawerView) { 
       invalidateOptionsMenu(); 
      } 
     }; 

     // Setting DrawerToggle on DrawerLayout 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
     if (savedInstanceState == null) { 
      getUrl(0); 
     } 
     // Creating an ArrayAdapter to add items to the listview mDrawerList 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(
       getBaseContext(), R.layout.drawer_list_item, getResources() 
         .getStringArray(R.array.menus)); 

     // Setting the adapter on mDrawerList 
     mDrawerList.setAdapter(adapter); 

     // Enabling Home button 
     getActionBar().setHomeButtonEnabled(true); 

     // Enabling Up navigation 
     getActionBar().setDisplayHomeAsUpEnabled(true); 

     // Setting item click listener for the listview mDrawerList 
     mDrawerList.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // Getting an array of rivers 
       String[] menuItems = getResources().getStringArray(
         R.array.menus); 

       // Currently selected river 
       mTitle = menuItems[position]; 
       getUrl(position); 

       // Closing the drawer 
       mDrawerLayout.closeDrawer(mDrawerList); 
      } 
     }); 
    } 

    @SuppressLint("Recycle") 
    protected void getUrl(int position) { 

     switch (position) { 
     case 0: 

     case 1: 

     case 2: 
     default: 
      // return ""; 
     } 
    } 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (mDrawerToggle.onOptionsItemSelected(item)) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * Called whenever we call invalidateOptionsMenu() 
    * */ 
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     // If the drawer is open, hide action items related to the content view 
     boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 

     menu.findItem(R.id.action_settings).setVisible(!drawerOpen); 
     return super.onPrepareOptionsMenu(menu); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 
+0

在你的片段,您可以设置操作栏 – Raghunandan

+0

的标题是的,我已经做到了,但我想也添加按钮这个问题,以及改变丝毫不差文本的颜色,改变ic_launcher – Developer

+0

我的形象不知道你在说什么按钮。试试这个'getActionBar()。setHomeButtonEnabled(真); getActionBar()。setDisplayHomeAsUpEnabled(true);' – Raghunandan

回答

1

在你的片段,你可以做

getActivity().getActionBar().setTitle("My Title"); 

我猜你是在谈论<

http://developer.android.com/training/implementing-navigation/ancestral.html

getActivity().getActionBar().setDisplayHomeAsUpEnabled(true); 

要更改图标

getActivity().getActionBar().setIcon(R.drawable.myappicon); 

我不知道您可以通过更改标题颜色的意思。

检查这个自定义样式操作栏

https://developer.android.com/training/basics/actionbar/styling.html

还要检查这个

Remove application icon and title from Honeycomb action bar

getActivity().getActionBar.setIcon(android.R.color.transparent); 
+0

我已更新我的问题。我需要更改的三件事 – Developer

+0

@GauravPandey查看我的更新。如果你不想要,不要设置图标。我真的不明白这里头是什么意思? – Raghunandan

+0

所以从那里我可以删除这我不明白,并改变标题颜色意味着,其中的Java文本是我在那里我想要在蓝色背景 – Developer

1

在清单文件,更改代码

<application 
     android:allowBackup="true" 
     android:icon="@drawable/notes" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

,并在styles.xml添加下面的代码

<style name="AppTheme" parent="AppBaseTheme"> 
     <item name="android:windowBackground">#FFE5E5E5</item> 
     <item name="android:actionBarStyle">@style/ActionBarStyle</item> 
    </style> 

    <style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
     <item name="android:icon">@drawable/notes</item> 
     <item name="android:background">#FF666666</item> 
    </style> 
+0

我不想要这个 @ drawable /笔记不可见 – Developer

+0

ic_launcher图像我想从我的应用程序中删除 – Developer

+0

删除这个 @ drawable/notes from style,它会起作用 – jyomin

0

设置此功能,动作条wiil帮助你实现你想要的。 请记住,您需要创建自己的操作栏布局。

getSupportActionBar()。setCustomView(R.layout.my_custom_actionbar_layout); getSupportActionBar()。setDisplayShowTitleEnabled(false); getSupportActionBar()。setDisplayShowCustomEnabled(true); getSupportActionBar()。setDisplayUseLogoEnabled(false); getSupportActionBar()。setDisplayHomeAsUpEnabled(false); getSupportActionBar()。setDisplayShowHomeEnabled(false);

+0

这不起作用我已经试过了 – Developer