Java 如何在不点击任何项目的情况下,在固定时间后关闭打开的导航抽屉?

Java 如何在不点击任何项目的情况下,在固定时间后关闭打开的导航抽屉?,java,android,android-layout,Java,Android,Android Layout,在创建我的主要活动时,我打开了一个导航抽屉。我还想在显示1或2秒后关闭导航抽屉 我试过了 if(navDrawer.isHovered()){ navDrawer.closeDrawers(); } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_

在创建我的主要活动时,我打开了一个导航抽屉。我还想在显示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();
        }
    }

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

试着在2秒钟后关闭

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            navDrawer.closeDrawers();
        }
    },2000);

步骤1:添加导航抽屉的侦听器,在打开的回调中实现此操作

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

        }
在该方法中实现该代码

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
if(navDrawer.isOpened()){
        navDrawer.closeDrawers();
}
    }
},2000);

不要只创建随机处理程序对象,因为这可能会导致问题,例如由于挂起的指令可运行而导致抽屉随机关闭。 您可以直接向视图发布/发布延迟可运行项。 e、 g:-


当抽屉打开时开始延迟后,检查抽屉是否打开。欢迎来到StackOverflow!请注意,在经过一定时间后自动关闭抽屉并不是一个好主意,因为这可能是一种不好的可访问性方法,特别是对于阅读速度慢的用户/需要一段时间来决定单击什么。还有,你有什么正当的理由要在一段时间后关闭抽屉吗?@Rohit谢谢,我尝试过这种方法,效果很好。@AKMShahabUddin接受答案,如果有帮助的话
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) {

            }
        });
    }
}