android - 如何在 Android 中设置 DrawerLayout 切换按钮?

标签 android navigation-drawer drawerlayout

我有一个 DrawerLayout 用作导航选项卡。我已经设置好了一切,但现在我需要一个小按钮来打开和关闭它(ActionBarToggle,或类似的东西)。我怎样才能尽可能简单地设置它? (我是一个相对初学者,所以我处理得不太好)

它只需要是左上角的一个按钮(就像 YouTube 应用程序中的按钮一样),用于打开和关闭抽屉。

编辑:我正在为抽屉添加代码:

     public class MainActivity extends ActionBarActivity {


 private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    /***/
    public NavDrawerListAdapter navDrawerListAdapter;
   Fragment fragment;
        @Override
    protected void onCreate(Bundle savedInstanceState) {
            categoryItems = new ArrayList<CategoryItem>();
            categoryItems.populate();
           navDrawerListAdapter = new NavDrawerListAdapter(this, categoryItems);
    mDrawerList.addHeaderView(listheader, null, false);
        // Set the list's click listener
        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);

   }
}

除此之外,还有一个简单的适配器 (NavDrawerListAdapter) 和一个简单的 JavaBean CategoryItem。还有一个小函数 populate(),它只是将一些元素添加到列表中。所有这些功能都很完美。我现在需要的只是左上角的切换按钮来打开和关闭抽屉导航。

最佳答案

public class MainActivity extends ActionBarActivity{
     private ActionBarDrawerToggle toggle;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_widget);
         setSupportActionBar(toolbar);
         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
         DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
         toggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close);
        toggle.setDrawerIndicatorEnabled(true);
        drawerLayout.setDrawerListener(toggle);
     }

     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
          return toggle != null && toggle.onOptionsItemSelected(item) || super.onOptionsItemSelected(item);
     }

     @Override
     protected void onPostCreate(Bundle savedInstanceState) {
          super.onPostCreate(savedInstanceState);
          if (toggle != null)
              toggle.syncState();
     }

     @Override
     public void onConfigurationChanged(Configuration newConfig) {
          super.onConfigurationChanged(newConfig);
          if (toggle != null)
              toggle.onConfigurationChanged(newConfig);
     }
}

编辑: 不要忘记在 build.gradle 中添加对支持库的引用:

compile 'com.android.support:support-v4:22.0.0'
compile 'com.android.support:appcompat-v7:22.0.0' 

并导入全部:

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.content.res.Configuration;

并检查您的styles.xml,父主题应该是:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

关于android - 如何在 Android 中设置 DrawerLayout 切换按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29101211/

相关文章:

java - 了解 Android 上下文 : (null object reference)

android - 使用 Intent.FLAG_ACTIVITY_SINGLE_TOP 和 CLEAR_TOP 时没有通过额外功能

android - 如何只用按钮打开抽屉布局?

android - 从其他 fragment 更改 fragment ,如导航链接

Android,不使用支持库时,DrawerLayout 的等效类是什么?

android - GoogleApiClient 未配置为使用此调用所需的 API

Android C2DM 200 错误

android - 关闭没有动画的抽屉导航

java - 更改抽屉导航的汉堡图标侧

android - 抽屉标题图像的大小应该是多少?