2015-06-14 92 views
0

我使用navigation drawer为一个项目,一切工作正常,但一个小问题,我总是那arrow显示不home按钮。 我尝试了在文档,论坛中发现的一切,这里没有任何实际工作。主页按钮不显示在导航抽屉android

我试过到目前为止:

mDrawerToggle.syncState(); 
actionBar.setDisplayShowTitleEnabled(true); 
actionBar.setDisplayHomeAsUpEnabled(true); 




@Override 
    public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) { 
     super.onPostCreate(savedInstanceState, persistentState); 
     mNavigationDrawerFragment.getmDrawerToggle().syncState(); 
    } 

ActionBar actionBar = getSupportActionBar(); 


actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
actionBar.setDisplayShowTitleEnabled(true); 
actionBar.setDisplayHomeAsUpEnabled(true); 
actionBar.setHomeButtonEnabled(true); 
actionBar.setTitle(mTitle); 

NavigationDrawerFragment:

// Defer code dependent on restoration of previous instance state. 
     mDrawerLayout.post(new Runnable() { 
      @Override 
      public void run() { 
       mDrawerToggle.syncState(); 
      } 
     }); 
+0

你的意思是你看到一个箭头? –

+0

一直是后退箭头 – user2137817

+0

当你点击后退箭头时会发生什么? –

回答

0

我一直忙着做一个简单的应用程序导航drawer..don't使用模板有不赞成的方法.. 这是完全工作..我创造了这个例子..试试这个..

你的主动活动

public class MainActivity extends ActionBarActivity { 

    Toolbar toolbar; 


    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    toolbar = (Toolbar) findViewById(R.id.app_toolbar); 
    setSupportActionBar(toolbar); 


    Profile profile = (Profile) getSupportFragmentManager().findFragmentById(R.id.profileFragmentInMain); 
    profile.setUp((DrawerLayout) findViewById(R.id.drawer),toolbar); 

} 

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

这是你的碎片..

public class Profile extends Fragment { 

ActionBarDrawerToggle drawerToggle; 
DrawerLayout mDrawerLayout; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.profile, container, false); 
    return view; 
} 

public void setUp(DrawerLayout drawerLayout, Toolbar toolbar) { 

    mDrawerLayout = drawerLayout; 
    drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.open, R.string.close){ 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      getActivity().invalidateOptionsMenu(); 
     } 

     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 
      getActivity().invalidateOptionsMenu(); 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 

      if (item != null && item.getItemId() == android.R.id.home) { 
       if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) { 
        mDrawerLayout.closeDrawer(Gravity.RIGHT); 
       } else { 
        mDrawerLayout.openDrawer(Gravity.RIGHT); 
       } 
       return true; 
      } 
      return false; 
     } 

    }; 
    mDrawerLayout.setDrawerListener(drawerToggle); 


    mDrawerLayout.post(new Runnable(){ 

     @Override 
     public void run(){ 

      drawerToggle.syncState(); 
     } 

    }); 
} 
} 

这是所有类..

现在XML布局..

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:id="@+id/drawer" 
android:layout_height="match_parent" > 


<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity"> 

    <include 
     android:id="@+id/app_toolbar" 
     layout="@layout/toolbar"/> 
</LinearLayout> 

<fragment 
    android:id="@+id/profileFragmentInMain" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    app:layout="@layout/profile" 
    android:name="com.example.ajay.myapplication.Profile" 
    tools:layout="@layout/profile"/> 

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

您profile.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:theme="@android:style/Theme.Holo.Light.DialogWhenLarge.NoActionBar"> 

</LinearLayout> 

您toolbar.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/app_toolbar" /> 

预览:

打开抽屉 enter image description here

关闭的抽屉 enter image description here

附加信息:我添加工具栏是材料设计实现关于ActionBar。它创建Actionbar的最新方法。你可以使用它。以防万一,请在您的styles.xml文件中选择主题为NoActionbBar

+0

都由Android工作室模板自动实现 – user2137817

+0

我更新了我的答案..不使用模板..它已被大多弃用的东西..这是drawerlayout与切换工作的简单示例..我已测试并运行它..完全正常工作.. –

+0

你只需要复制和粘贴它..希望你会学习和尝试理解。它.. –

0

所以我终于找到了解决方案。我刚刚拍下这个R.drawable.ic_drawer来自:

drawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, R.drawable.ic_drawer, R.string.open, R.string.close); 

而且它的功能就像一个魅力。

+0

你的努力被赞赏,我提到,但它不是我所期待的。这个评论是无用的。 – user2137817