0

主要活動顯示,但沒有導航抽屜的工具欄。 我張貼我的代碼在下面。 Im初學者到Android,我需要你的幫助傢伙。提前感謝。導航抽屜不顯示

BASE ACTIVITY.class

public class BaseActivity extends AppCompatActivity { 

    private DrawerLayout mDrawerLayout; 
    private ListView mDrawerList; 
    private ActionBarDrawerToggle mDrawerToggle; 
    protected RelativeLayout _completeLayout, _activityLayout; 
    // nav drawer title 
    private CharSequence mDrawerTitle; 

    private Toolbar topToolBar; 
    // used to store app title 
    private CharSequence mTitle; 

    private ArrayList<NavDrawerItem> navDrawerItems; 
    private NavDrawerListAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.drawer); 
     // if (savedInstanceState == null) { 
     // // on first time display view for first nav item 
     // // displayView(0); 

     mTitle = mDrawerTitle = " "; 

     topToolBar = (Toolbar)findViewById(R.id.toolbar); 
     setSupportActionBar(topToolBar); 
     topToolBar.setLogo(R.drawable.logo); 
     topToolBar.setLogoDescription(" "); 


    } 

    public void set(String[] navMenuTitles,TypedArray navMenuIcons) { 
     mTitle = mDrawerTitle = " "; 


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

     navDrawerItems = new ArrayList<NavDrawerItem>(); 

     // adding nav drawer items 
     if(navMenuIcons==null){ 
      for(int i=0;i<navMenuTitles.length;i++){ 
       navDrawerItems.add(new NavDrawerItem(navMenuTitles[i])); 
      }}else{ 
      for(int i=0;i<navMenuTitles.length;i++){ 
       navDrawerItems.add(new NavDrawerItem(navMenuTitles[i],navMenuIcons.getResourceId(i, -1))); 
      } 
     } 

     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 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     // getSupportActionBar().setIcon(R.drawable.ic_drawer); 

     mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout 
       , // 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) { 
       getSupportActionBar().setTitle(" "); 
       // calling onPrepareOptionsMenu() to show action bar icons 
       supportInvalidateOptionsMenu(); 
      } 

      public void onDrawerOpened(View drawerView) { 
       getSupportActionBar().setTitle(" "); 
       // calling onPrepareOptionsMenu() to hide action bar icons 
       supportInvalidateOptionsMenu(); 
      } 
     }; 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 

    } 

    private class SlideMenuClickListener implements ListView.OnItemClickListener { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, 
           long id) { 
      // display view for selected nav drawer item 
      displayView(position); 
     } 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // getSupportMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     if (item.getItemId() == android.R.id.home) { 
      if (mDrawerLayout.isDrawerOpen(mDrawerList)) { 
       mDrawerLayout.closeDrawer(mDrawerList); 
      } else { 
       mDrawerLayout.openDrawer(mDrawerList); 
      } 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    /*** 
    * Called when invalidateOptionsMenu() is triggered 
    */ 
    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     // if nav drawer is opened, hide the action items 
     // boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); 
     // menu.findItem(R.id.action_settings).setVisible(!drawerOpen); 
     return super.onPrepareOptionsMenu(menu); 
    } 

    /** 
    * Diplaying fragment view for selected nav drawer list item 
    * */ 
    private void displayView(int position) { 
     // update the main content by replacing fragments 
     switch (position) { 
      case 0: 
       Intent intent = new Intent(this, Doctor.class); 
       startActivity(intent); 
       finish(); 
       break; 
      case 1: 
       Intent intent1 = new Intent(this, Hospital.class); 
       startActivity(intent1); 
       finish(); 
       break; 
      default: 
       break; 
     } 

     // update selected item and title, then close the drawer 
     mDrawerList.setItemChecked(position, true); 
     mDrawerList.setSelection(position); 
     mDrawerLayout.closeDrawer(mDrawerList); 
    } 

    @Override 
    public void setTitle(CharSequence title) { 
     mTitle = title; 
     getSupportActionBar().setTitle(""); 

    } 

    /** 
    * When using the ActionBarDrawerToggle, you must call it during 
    * onPostCreate() and onConfigurationChanged()... 
    */ 

    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     mDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggls 
     mDrawerToggle.onConfigurationChanged(newConfig); 
    } 
} 

DRAWER.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="64dp" 
      android:layout_gravity="left" 
      android:background="#ffffff" 
      android:minHeight="?attr/actionBarSize" /> 


    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
     <!-- Add content here --> 
    </FrameLayout> 

    <!-- The navigation drawer --> 
    <ListView android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#ffffff"/> 
</android.support.v4.widget.DrawerLayout> 

    </LinearLayout> 

drawer_list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="48dp" 
    android:paddingTop="12dp" 
    android:paddingBottom="12dp" 
    android:background="@drawable/selector_navigation_drawer" 
    > 

    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:gravity="center|start" 
     android:layout_marginLeft="16dp" 
     android:layout_marginStart="16dp" 
     android:src="@drawable/icon" 
     android:layout_marginTop="16dp" 
     android:layout_centerVertical="true" /> 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/icon" 
     android:gravity="center|start" 
     android:layout_marginLeft="24dp" 
     android:text="no text" 
     android:textColor="#000000" 
     android:layout_alignTop="@+id/icon" 
     android:textSize="20dp" 
     android:paddingRight="40dp" 
     android:layout_alignBottom="@+id/icon"/> 


</RelativeLayout> 

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light"> 
    <item name="windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

NavDrawerListAdapter.class

public class NavDrawerListAdapter extends BaseAdapter { 

    private Context context; 
    private ArrayList<NavDrawerItem> navDrawerItems; 

    public NavDrawerListAdapter(Context context, ArrayList<NavDrawerItem> navDrawerItems){ 
     this.context = context; 
     this.navDrawerItems = navDrawerItems; 
    } 

    @Override 
    public int getCount() { 
     return navDrawerItems.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return navDrawerItems.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) { 
      LayoutInflater mInflater = (LayoutInflater) 
        context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
      convertView = mInflater.inflate(R.layout.drawer_list_item, null); 
     } 

     ImageView imgIcon = (ImageView) convertView.findViewById(R.id.icon); 
     TextView txtTitle = (TextView) convertView.findViewById(R.id.title); 


     imgIcon.setImageResource(navDrawerItems.get(position).getIcon()); 
     txtTitle.setText(navDrawerItems.get(position).getTitle()); 



     return convertView; 
    } 

} 

回答

0

onCreate()方法

getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 
+0

應用部隊密切一次我運行 –

0

抽屜佈局只需要2個孩子加上這些行..一個是主要內容等是抽屜

你的情況您只需修改您的佈局文件,如下所示:

<android.support.v4.widget.DrawerLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="64dp" 
       android:layout_gravity="left" 
       android:background="#ffffff" 
       android:minHeight="?attr/actionBarSize" /> 
      <!-- The main content view --> 
     <FrameLayout 
       android:id="@+id/content_frame" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 
      <!-- Add content here --> 
     </FrameLayout> 
    </LinearLayout> 
<!-- The navigation drawer --> 
<ListView android:id="@+id/left_drawer" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:dividerHeight="0dp" 
    android:background="#ffffff"/> 
</android.support.v4.widget.DrawerLayout> 

你Drawerlayout必須是父佈局和休息2名兒童即的LinearLayout和ListView

而且通過這個文檔去,它可以幫助清除畫面

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