android - 在 Android 中打开抽屉导航时,将汉堡操作栏图标更改为旋转箭头不起作用

标签 android android-actionbar navigation-drawer drawertoggle

我在我的 Android 应用程序中使用 Navigation Drawer,它工作正常。

我想为打开关闭抽屉导航添加一些动画

动画:

1.打开抽屉导航显示箭头,隐藏汉堡包

2.关闭-再次显示汉堡包,隐藏箭头

打开和关闭它应该是旋转。我尝试了一些代码,但它不起作用。

请任何人帮助我做到这一点。

样式.xml

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="spinBars">true</item>
    <item name="color">@android:color/white</item>
</style>

我试过了,link i referred

import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;


//for Navigation Bar
        DrawerLayout drawerLayout;
        ListView listView;
        String[] drawerlist;
        ActionBarDrawerToggle drawerListener;

        private MyAdapter4 myAdapter4;

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




                //navigation initialize
                        drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
                        listView = (ListView) findViewById(R.id.drawerList);
                        drawerlist = getResources().getStringArray(R.array.drawerlist);

                        myAdapter4 = new MyAdapter4(this);
                        listView.setAdapter(myAdapter4);

                        //for navigation click

                        listView.setOnItemClickListener(new DrawerItemClickListener());

                        //Navigation Bar starts

                        drawerListener = new ActionBarDrawerToggle
                       (this, drawerLayout, R.drawable.ic_drawer, 
                                    R.string.drawer_open, R.string.drawer_close)
                        {

                            public void onDrawerClosed(View drawerView)
                            {
                                super.onDrawerClosed(drawerView);
                            }

                            public void onDrawerOpened(View drawerView)
                            {
                                super.onDrawerOpened(drawerView);
                            }
                        };

                            drawerLayout.setDrawerListener(drawerListener);
                            getSupportActionBar().setHomeButtonEnabled(true);
                            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            }

我的抽屉导航代码

最佳答案

检查下面是获取汉堡包样式的抽屉导航的示例代码

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;

    public class MainActivity extends AppCompatActivity{
    DrawerLayout drawerLayout;
    ActionBarDrawerToggle toggle;
    private ArrayList<DrawerItem> drawerItems = new ArrayList<>();
    private ListView mDrawerList;
    private DrawerListAdapter mAdapter;

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

    mDrawerList = (ListView)findViewById(R.id.left_drawer_list);
    addDrawerItems();

/**Drawer Initialization*/
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    toggle = new ActionBarDrawerToggle
            (
                    this,
                    drawerLayout,
                    R.string.navigation_drawer_open,
                    R.string.navigation_drawer_close
            )
    {
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            getSupportActionBar().hide();
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            getSupportActionBar().show();
        }
    };
    drawerLayout.setDrawerListener(toggle);
    toggle.syncState();
}

 private void addDrawerItems() {
    drawerItems.add(new DrawerItem("ALL"));
    drawerItems.add(new DrawerItem("FAVOURITES"));
    drawerItems.add(new DrawerItem("FILTERS"));
    drawerItems.add(new DrawerItem("SETTINGS"));

     DrawerListAdapter adapter = new DrawerListAdapter(this, drawerItems);
            mDrawerList.setAdapter(adapter);
            mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                ///Write your listener here

            }});
        }
}

检查导入以了解我拥有的库。

我的v7库版本号编译'com.android.support:appcompat-v7:22.1.1'

更新:将下面添加到您的 strings.xml

<string name="navigation_drawer_open">Open navigation drawer</string>
<string name="navigation_drawer_close">Close navigation drawer</string>

关于android - 在 Android 中打开抽屉导航时,将汉堡操作栏图标更改为旋转箭头不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31243454/

相关文章:

android - 运行任何项目时出现 Eclipse 错误 : Unknown error: Conversion = '1'

android标题受到其他标题(工具栏)的影响

java - 如何禁用Android中的对话框按钮?

ios - 我如何在中央 Controller 上显示一个具有透明度的抽屉导航?

android - 使用抽屉导航检测键盘是否显示在 android 中

tabs - Flutter - 使用带有动态选项卡 View 的 TabBarView 小部件实现抽屉导航

Android 按钮和变量

java - android:当用户长按网页 View 时如何禁用 Action 模式?

java - Android ActionBar - 尽管 API 级别 14,但属性 showAsAction 没有资源

java - 在我的 Android 应用程序中集成 PagerSlidingTabStrip 时出错