2016-01-03 108 views
0

我在我的工具欄中添加了導航抽屜並將工具欄添加到我的主頁活動中。抽屜似乎工作正常,但只有當我將手指滑到漢堡包圖標下方時才抽出。否則,如果我只是點擊圖標什麼都沒有發生。有人知道爲什麼嗎?我看了下面的教程,理想情況下,當點擊漢堡包圖標時,抽屜應該出來:https://www.youtube.com/watch?v=Lfc1q1dFB3E導航抽屜未正確開啓

是否有我缺少的onClick屬性?這裏是我的代碼:

public class HomePage extends AppCompatActivity implements View.OnClickListener { 

private DrawerLayout drawerLayout; 
private ListView drawerList; 
private ActionBarDrawerToggle drawerToggle; 
String[] drawerListItems; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home_page); 

    Toolbar myToolbar = (Toolbar) findViewById(R.id.toolBarHome); 
    drawerLayout = (DrawerLayout)findViewById(R.id.homePageDrawer); 
    drawerList = (ListView)findViewById(R.id.homePageList); 
    drawerListItems = getResources().getStringArray(R.array.activities); 
    drawerList.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,drawerListItems)); 
    drawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      switch (position) { 
       case 0: { 
        Intent i = new Intent(HomePage.this, HomePage.class); 
        startActivity(i); 
        break; 
       } 
       case 1: { 
        Intent i = new Intent(HomePage.this, Allergy.class); 
        startActivity(i); 
        break; 
       } 

      } 
      drawerLayout.closeDrawer(drawerList); 
     } 
    }); 
    drawerToggle = new ActionBarDrawerToggle(this,drawerLayout,myToolbar,R.string.drawer_open,R.string.drawer_close) 
    { 
     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      invalidateOptionsMenu(); 
      syncState(); 
     } 

     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 
      invalidateOptionsMenu(); 
      syncState(); 
     } 
    }; 
    drawerLayout.setDrawerListener(drawerToggle); 
    setSupportActionBar(myToolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setHomeButtonEnabled(true); 
    drawerToggle.syncState(); 
} 

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

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    drawerToggle.onConfigurationChanged(newConfig); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()){ 
     case R.id.home:{ 
      if (drawerLayout.isDrawerOpen(drawerList)){ 
       drawerLayout.closeDrawer(drawerList); 
      }else{ 
       drawerLayout.openDrawer(drawerList); 
      } 
      return true; 
     } 
     default:return super.onOptionsItemSelected(item); 
    } 
} 

這是XML佈局。我的主頁活動中有一個ImageView。當NavigationDrawer翻出,我需要它來覆蓋現有的ImageView的,所以我在我的drawerlayout內把它放在一個相對佈局內:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:background="@drawable/boardlayered" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity"> 


    <android.support.v7.widget.Toolbar 
    android:id="@+id/toolBarHome" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary"> 

    </android.support.v7.widget.Toolbar> 

    <android.support.v4.widget.DrawerLayout 
    android:id="@+id/homePageDrawer" 
    android:layout_below="@+id/toolBarHome" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <ImageView 
      android:id="@+id/dogPic" 
      android:background="@drawable/happy_dog" 
      android:layout_width="175dp" 
      android:layout_height="200dp" 
      android:layout_alignParentBottom="true" 
      android:layout_marginLeft="20dp" /> 

    </RelativeLayout> 


    <ListView 
     android:id="@+id/homePageList" 
     android:background="@android:color/white" 
     android:layout_gravity="start" 
     android:layout_width="305dp" 
     android:layout_height="match_parent"></ListView> 

    </android.support.v4.widget.DrawerLayout> 

+0

你可以發佈你的行動欄菜單的佈局嗎? –

+0

是的,我剛添加它。 –

+0

標記它也可能有幫助,包括屏幕截圖不起作用。謝謝 –

回答

0

我覺得這裏的問題是與線:

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setHomeButtonEnabled(true); 

看來這會嘗試使用您的切換按鈕作爲「向上」導航按鈕,而不是嘗試使用漢堡按鈕打開和關閉抽屜,您可以刪除這些線條。

+0

是的,我明白你的意思。不幸的是,沒有這些線路,它仍然在做同樣的事情。 –

1

找到它。問題是在這一段代碼,這對於漢堡包圖標直接負責執行動作:

具體地說

case R.id.home: 

應該是

case android.R.id.home: 

這後者的情況下的語法是什麼工作