Articles of drawerlayout

你需要传递给v4.widget.DrawerLayout.isDrawerOpen()/。openDrawer()/。closeDrawer()

我一直试图将我的代码移到DrawerLayout正如android所建议的那样, SlidingDrawer不推荐使用SlidingDrawer 。 我的问题是到目前为止, DrawerLayout似乎要么执行得非常糟糕,有无用的错误信息(没有防御性编程)和/或文档中解释得不够好。 这里描述了isDrawerOpen()方法: public boolean isDrawerOpen(查看抽屉) 检查给定的抽屉视图当前是否处于打开状态。 为了被视为“开放”,抽屉必须已经稳定在其完全可见的状态。 要检查部分可见性,请使用isDrawerVisible(android.view.View)。 参数:drawer – 要检查的抽屉视图 返回:如果给定的抽屉视图处于打开状态,则返回true 每个方法isDrawerOpen(View drawer) , openDrawer(View drawer)和closeDrawer(View drawer)在传递时不起作用:有问题的DrawerLayout或它的任何一个子DrawerLayout 。 我不知道我应该为这些方法提供什么来让它们发挥作用。 有人能告诉我吗? 有关实现,请参阅下面的整个问题描述。 我有这样的布局: 在我的代码中,我将以下方法连接到一个按钮: protected void onCreate(Bundle savedInstanceState) { … mMenuPanel = (DrawerLayout) findViewById(R.id.mainmenuPanel); …. } public boolean isDrawerOpen() { if(mMenuPanel != null) { return mMenuPanel.isDrawerOpen(mMenuPanel); } return false; } 但是,如果您将其自身作为参数(在极端情况下将是多余的),则会出现以下错误: […]

如何将项目添加到NavigationView中的菜单组

在Android的文字游戏中,我目前有一个从left_drawer_menu.xml膨胀的硬编码菜单,包括3组(轮到我,对手回合,最后是其他东西): mLeftDrawer = (NavigationView) findViewById(R.id.left_drawer); mLeftDrawer.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(final MenuItem menuItem) { Menu menu = mLeftDrawer.getMenu(); if (menuItem.getGroupId() == R.id.my_move) { menu.setGroupCheckable(R.id.my_move, true, true); menu.setGroupCheckable(R.id.his_move, false, false); menu.setGroupCheckable(R.id.extras, false, false); } else if (menuItem.getGroupId() == R.id.his_move) { menu.setGroupCheckable(R.id.my_move, false, false); menu.setGroupCheckable(R.id.his_move, true, true); menu.setGroupCheckable(R.id.extras, false, false); } else if (menuItem.getGroupId() == […]

Android工具栏+标签布局+抽屉,滚动时隐藏工具栏并将TabLayout置于顶部

我有活动,附有抽屉。 抽屉的每个菜单都是一个片段,在其中一个菜单下我有一个带有TabLayout的片段,每个标签都包含一个RecyclerView 。 所以现在,当我滚动RecyclerView ,标签布局会被隐藏,但ToolBar仍然位于顶部。 我需要的是ToolBar隐藏( scrollFlags:scroll|enterAlways ), TabLayout应显示在顶部。 所以目前的设置是: Activity with attached DrawerLayout -> Fragment with TabLayout -> Tab Fragment 1 with RecyclerView -> Tab Fragment 2 with RecyclerView

如何使用可见句柄实现DrawerLayout

我已经为我的应用程序成功实现了NavigationDrawer。 我的应用程序显示在屏幕左侧打开的抽屉。 我的问题是我需要在左边添加一个按钮。 可以单击或滑动该按钮以打开左侧抽屉。 我能做到的。 但按钮应该看起来像抽屉的一部分会溢出到屏幕上。 这意味着当抽屉打开和关闭时,按钮应同时滑动。 关闭状态: 开放状态 我尝试将按钮添加到左侧抽屉的布局中,但似乎您无法使其显示在其边界之外,并且当您关闭它时,抽屉将始终完全隐藏。 现在我正在尝试添加它来为主DrawerLayout添加一个按钮并使其对齐到左抽屉的右侧……但是没有运气……看起来像DrawerLayout不能有两个以上的孩子.. 。 任何帮助将不胜感激。 我正在使用支持库(v4) [编辑]我支持API级别8 …所以无法使用ImageView.setTranslationX或View.OnAttachStateChangeListener

在onTouchEvent中的CoordinatorLayout NullPointerException

我正在获取CoordinatorLayout onTouchEvent的NullPointerException 。 我正在使用DrawerLayout与Android支持AppCompat v23.0.0库的CollapsingToolbarLayout 。 我的观察是在滚动CollapsingToolbarLayout或点击抽屉项目时随机发生崩溃。 有没有人遇到这个问题? 任何工作,以避免这种exception? logcat的: 08-22 15:16:34.657: E/AndroidRuntime(27596): java.lang.NullPointerException: Attempt to invoke virtual method 'float android.view.MotionEvent.getX()' on a null object reference 08-22 15:16:34.657: E/AndroidRuntime(27596): at android.view.View.onTouchEvent(View.java:9321) 08-22 15:16:34.657: E/AndroidRuntime(27596): at android.support.design.widget.CoordinatorLayout.onTouchEvent(CoordinatorLayout.java:449) 08-22 15:16:34.657: E/AndroidRuntime(27596): at android.view.View.dispatchTouchEvent(View.java:8388) 08-22 15:16:34.657: E/AndroidRuntime(27596): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2398) 08-22 15:16:34.657: E/AndroidRuntime(27596): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2158) 08-22 15:16:34.657: E/AndroidRuntime(27596): at […]

在Android应用中使用DrawerLayout时手势不起作用

我有一个单一的活动Android应用程序。 此活动使用此布局: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!– The main content view –> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <!– The navigation drawer –> <ListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#111"/> </android.support.v4.widget.DrawerLayout> 然后,在我的源文件中,我有两个在构造函数中定义的手势检测器: mDetector = new GestureDetectorCompat(this, new CustomGestureListener()); mScaleDetector = new ScaleGestureDetector(this, new CustomScaleGestureListener()); 而我正在重写onTouchEvent这种方式: @Override public boolean onTouchEvent(MotionEvent event) { if (event.getPointerCount() […]

toolbar.setNavigationOnClickListener不起作用

toolbar.setNavigationOnClickListener这个函数不工作不知道为什么。 activity_main.xml布局 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".login.LoginActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> container_main.xml布局 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <FrameLayout android:id="@+id/frame_container" android:layout_width="match_parent" android:layout_height="match_parent" /> <!– Listview to display slider menu –> <ListView android:id="@+id/list_slidermenu" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@color/list_background" android:choiceMode="singleChoice" android:divider="@color/list_divider" android:dividerHeight="1dp" android:listSelector="@drawable/list_selector" /> […]

当DrawerLayout可见时,不要调暗主要内容?

在Android中使用DrawerLayout时,打开抽屉会导致主内容区域变暗。 有什么方法可以避免这种情况,所以在抽屉不在的时候,主要内容保持同样可见?

如何在NavigationView中添加页脚button

我正在按照“带有页脚的Androiddevise库NavigationView”来添加NavigationView底部的button。 问题是只有最后一个NavigationView出现,它占据了整个屏幕高度。 这是我的布局: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!– Activity here –> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start"> <android.support.design.widget.NavigationView android:id="@+id/navigation_menu_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="top" app:menu="@menu/menu_drawer"/> <android.support.design.widget.NavigationView android:id="@+id/navigation_footer_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom" app:menu="@menu/menu_drawer_footer"/> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> 结果如下: 我怎样才能解决这个问题?

Android的DrawerLayout不能使用ViewPager?

我已经在一个DrawerLayout里面实现了ViewPager ,但它正常工作,但是Drawer菜单列表视图不能正确显示,它将显示在ViewPager选项卡下面的操作栏。希望下面的图可以给你一个想法。 我正在使用actionbarsherlock库。 我如何显示抽屉菜单列表视图下面的行动栏? 我曾试过。 Activity OnCreate(): setContentView(R.layout.activity_layout); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); mLinearLayout = (LinearLayout)findViewById(R.id.ll_viewpager_layout); // set a custom shadow that overlays the main content when the drawer opens mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); // set up the drawer's list view with items and click listener mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); mDrawerToggle = new ActionBarDrawerToggle( this, /* […]