3线图标没有动画成抽屉式导航较小的图像 [英] 3 line icon is not animating into a smaller image in Navigation Drawer

查看:226
本文介绍了3线图标没有动画成抽屉式导航较小的图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

小图标标识旁(指示器或第3行)时,不改变成一个较小的一个。

- >这种形象没有动画,当我点击应用程序标志抽屉被打开,但图像没有动画成是抽屉当前打开的一个指标更小的图像。

  gABar.get()setDisplayHomeAsUpEnabled(真)。


  mDrawerToggle =新ActionBarDrawerToggle(
        getActivity()/ *主机活动* /
        mDrawerLayout.get(),/ * DrawerLayout对象* /
        R.drawable.ic_drawer2,/ *导航抽屉图像替换上插入符* /
        R.string.drawer_open,/ *开放抽屉的描述可访问* /
        R.string.drawer_close / *关闭抽屉的描述可访问* /
        ){
    @覆盖
    公共无效onDrawerClosed(查看视图){
        。getActivity()getActionBar()的setTitle(mTitle)。
        。getActivity()invalidateOptionsMenu(); //创建调用上prepareOptionsMenu()        Log.d(onDrawerClosed,内部);
    }    @覆盖
    公共无效onDrawerOpened(查看drawerView){
        。getActivity()getActionBar()的setTitle(mDrawerTitle)。
        。getActivity()invalidateOptionsMenu(); //创建调用上prepareOptionsMenu()
    }};


  @覆盖
公共布尔onOptionsItemSelected(菜单项项)
{
    INT ID = item.getItemId();
    Log.d(项ID:,onOptionsItemSelected项ID+ ID);
    如果(ID == android.R.id.home){
        返回true;    }其他{
        返回super.onOptionsItemSelected(项目);
    }
}


解决方案

请确保你把此行到您的code,你宣布你ActionBarDrawerToggle:

  mDrawerLayout.setDrawerListener(mDrawerToggle);

你可以看到在这个例子:

 公共类MyActivity扩展ActionBarActivity {    私人DrawerLayout mDrawerLayout;
    私人的ListView mDrawerList;
    私人ActionBarDrawerToggle mDrawerToggle;
    私有String []菜单项;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        getWindow()setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)。
        的setContentView(R.layout.activity_main);
        mDrawerLayout =(DrawerLayout)findViewById(R.id.drawer_layout);
        mDrawerList =(ListView控件)findViewById(R.id.left_drawer);
        菜单项= getResources()getStringArray(R.array.optionsname)。        MyDrawerAdapter draweradapter =新MyDrawerAdapter(getApplicationContext(),菜单项);
        mDrawerList.setAdapter(draweradapter);        mDrawerToggle =新ActionBarDrawerToggle(这一点,mDrawerLayout,R.drawable.ic_navigation_drawer,R.string.drawer_open,R.string.drawer_close){            公共无效onDrawerClosed(查看视图){
                invalidateOptionsMenu();
            }            公共无效onDrawerOpened(查看drawerView){
                invalidateOptionsMenu();
            }            @覆盖
            公共无效onDrawerSlide(查看drawerView,浮动slideOffset){
                super.onDrawerSlide(drawerView,slideOffset);
                mDrawerLayout.bringToFront();
                mDrawerLayout.bringChildToFront(drawerView);
                mDrawerLayout.requestLayout();
                mDrawerLayout.invalidate();
            }
        };        mDrawerLayout.setDrawerListener(mDrawerToggle);        mDrawerList.setOnItemClickListener(新DrawerItemClickListener());
        getSupportActionBar()setDisplayHomeAsUpEnabled(真)。
        getSupportActionBar()setDisplayShowTitleEnabled(假)。
        getSupportActionBar()setHomeButtonEnabled(真)。
        。getSupportActionBar()的setIcon(新ColorDrawable(00000000));
        。getSupportActionBar()setBackgroundDrawable(新ColorDrawable(为0xffffffff));
    }
}

如果您忘记将drawerlistener添加到drawerlayout它不会动画的抽屉图标。

The small icon(indicator or 3 line) beside the logo, is not changing into a smaller one.

--> this image is not animating, When I click the apps' logo the drawer is opened but the image is not animated into a more smaller image which is an indicator that the drawer is currently opened.

gABar.get().setDisplayHomeAsUpEnabled(true);


 mDrawerToggle = new ActionBarDrawerToggle(
        getActivity(),                  /* host Activity */
        mDrawerLayout.get(),         /* DrawerLayout object */
        R.drawable.ic_drawer2,  /* nav drawer image to replace 'Up' caret */
        R.string.drawer_open,  /* "open drawer" description for accessibility */
        R.string.drawer_close  /* "close drawer" description for accessibility */
        ) {
    @Override
    public void onDrawerClosed(View view) {
        getActivity().getActionBar().setTitle(mTitle);
        getActivity().invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()

        Log.d("onDrawerClosed", "inside");
    }

    @Override
    public void onDrawerOpened(View drawerView) {
        getActivity().getActionBar().setTitle(mDrawerTitle);
        getActivity().invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
    }

};


@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    int id = item.getItemId();
    Log.d("item ID : ", "onOptionsItemSelected Item ID" + id);
    if (id == android.R.id.home) {


        return true;

    } else {
        return super.onOptionsItemSelected(item);
    }
}

解决方案

please ensure you put this line into your code where you declared your ActionBarDrawerToggle:

mDrawerLayout.setDrawerListener(mDrawerToggle);

as you can see in this example:

public class MyActivity extends ActionBarActivity  {

    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;
    private String[] menuitems;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        mDrawerLayout   = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList     = (ListView) findViewById(R.id.left_drawer);
        menuitems   = getResources().getStringArray(R.array.optionsname);

        MyDrawerAdapter draweradapter = new  MyDrawerAdapter(getApplicationContext(), menuitems);
        mDrawerList.setAdapter(draweradapter);

        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_navigation_drawer, R.string.drawer_open, R.string.drawer_close) {

            public void onDrawerClosed(View view) {
                invalidateOptionsMenu();
            }

            public void onDrawerOpened(View drawerView) {
                invalidateOptionsMenu();
            }

            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                super.onDrawerSlide(drawerView, slideOffset);
                mDrawerLayout.bringToFront();
                mDrawerLayout.bringChildToFront(drawerView);
                mDrawerLayout.requestLayout();
                mDrawerLayout.invalidate();
            }
        };

        mDrawerLayout.setDrawerListener(mDrawerToggle);

        mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setIcon(new ColorDrawable(0x00000000));
        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xffffffff));
    }
}

if you forget to add the drawerlistener to the drawerlayout it wont animate your drawer icon.

这篇关于3线图标没有动画成抽屉式导航较小的图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆