[英]How to close an opened navigation drawer after a fixed time not clicking on any items?
I opened an navigation drawer onCreate() of my main activity. 我在主要活动的onCreate()上打开了一个导航抽屉。 I also want to close that navigation drawer after 1 or 2 second showing.
我还想在显示1或2秒后关闭该导航抽屉。
I tried 我试过了
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();
}
}
I want to know how I can set an timer for the closing of the navigation drawer. 我想知道如何设置计时器以关闭导航抽屉。 Is there any way.
有没有办法。
Try this to close after 2 second 试试这个2秒后关闭
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
navDrawer.closeDrawers();
}
},2000);
Step 1: Add a Listener of Nav Drawer , in opened call back implement this 第1步:添加Nav Drawer的监听器,在打开的回调中实现此功能
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
implement this code into this mehtod 将此代码实现到此方法中
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if(navDrawer.isOpened()){
navDrawer.closeDrawers();
}
}
},2000);
Don't just create random handler objects, because that might cause issues like randomly closing of drawer due to pending instructions (runnables). 不要仅创建随机处理程序对象,因为这可能会导致诸如由于挂起指令(可运行对象)而随机关闭抽屉的问题。 You can directly post/post-delay runnables to views.
您可以直接将可运行对象发布/延迟到视图。 eg:-
例如:-
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) {
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.