猿问

如何在固定时间未单击任何项​​目后关闭打开的导航抽屉?

我打开了主要活动的导航抽屉 onCreate() 。我还想在显示 1 或 2 秒后关闭该导航抽屉。


我试过


if(navDrawer.isHovered()){

       navDrawer.closeDrawers();

    }


protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ButterKnife.bind(this);

        setToolbarContent(imgNotification,txtNotification);

        fragmentManager = getSupportFragmentManager();

        navDrawer.openDrawer(rightNavigationView,true);

        if(navDrawer.isHovered()){

           navDrawer.closeDrawers();

        }

    }

我想知道如何设置关闭导航抽屉的计时器。有什么办法吗。


青春有我
浏览 141回答 3
3回答

FFIVE

步骤一:添加 Nav Drawer 的监听器,在打开的回调中实现这个@Override        public void onDrawerOpened(View drawerView) {            super.onDrawerOpened(drawerView);        }将此代码实现到此方法中new Handler().postDelayed(new Runnable() {    @Override    public void run() {if(navDrawer.isOpened()){        navDrawer.closeDrawers();}    }},2000);

回首忆惘然

尝试在 2 秒后关闭new Handler().postDelayed(new Runnable() {        @Override        public void run() {            navDrawer.closeDrawers();        }    },2000);

杨__羊羊

不要只是创建随机处理程序对象,因为这可能会导致诸如由于待处理指令(可运行对象)而随机关闭抽屉之类的问题。您可以直接将可运行对象发布/延迟后到视图。例如:-class ExampleActivity extends AppCompatActivity {    private static final long AUTO_CLOSE_DELAY = 2000L;    @Nullable    private DrawerLayout drawerLayout;    @NonNull    private final Runnable closeDrawerRunnable = new Runnable() {        @Override        public void run() {            if(drawerLayout!=null && drawerLayout.isDrawerOpen(GravityCompat.START)){                drawerLayout.closeDrawer(GravityCompat.START);            }        }    };    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_example);        drawerLayout = findViewById(R.id.drawerLayout);        drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {            @Override            public void onDrawerSlide(@NonNull View drawerView, float slideOffset) {            }            @Override            public void onDrawerOpened(@NonNull View drawerView) {                drawerLayout.removeCallbacks(closeDrawerRunnable);                drawerLayout.postDelayed(closeDrawerRunnable,AUTO_CLOSE_DELAY);            }            @Override            public void onDrawerClosed(@NonNull View drawerView) {                drawerLayout.removeCallbacks(closeDrawerRunnable);            }            @Override            public void onDrawerStateChanged(int newState) {            }        });    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答