我有一个应用程序可以覆盖 的onTouchEvent(MotionEvent ev)来MainActivity确定Two-Finger-Swipe和Pich-Open/ Pinch-Close。一切正常,直到我将其添加到应用程序中(就像创建导航抽屉DrawerLayout中所述)。问题:阻止在 MainActivity 中调用。DrawerLayoutonTouchEvent()
我开始编写CustomDrawerLayout, 并尝试重写DrawerLayout方法onInterceptTouch()和onTouchEvent()。
TouchEvent(我发现)将其传输到 MainActivity 的唯一方法:
    // onTouchEvent of CustomDrawerLayout 
    @Override
    public boolean onTouchEvent(MotionEvent ev){
        // super.onTouchEvent(ev); // prevent transmission of TouchEvent
        return false;
    }
这里的问题是抽屉无法正确打开。抽屉卡住了,如这篇文章中所述: DrawerLayout getting 卡在 swipe 上。
是否可以将 传输TouchEvent到 MainActivity 来处理 MultiTouchDetection?或者我必须处理这个问题CustomDrawerLayout?
更新1
首先,我不得不说,如果我从左边缘滑动,抽屉只会卡住。通过单击ActionBar抽屉中的抽屉图标,效果很好。TouchEvent使用以下代码传输作品。但前提是抽屉打开了!否则Activity.onTouchEvent不叫!
    // onTouchEvent of …我正在学习如何使用Android的导航抽屉.我在布局xml文件中创建了一个relativeLayout,并将两个部分(FrameLayout和Listview)放在RelativeLayout中.但是我收到以下错误:
java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.slidingtest/com.slidingmenu.MainActivity}:java.lang.IllegalArgumentException:查看android.widget.RelativeLayout@423c0dc0不是滑动抽屉
我找到了这个网页,但仍无法解决我的问题.有人可以帮帮我吗?谢谢...
这是我的MainActivity.java
public class MainActivity extends Activity {
private DrawerLayout mDrawerLayout;
private RelativeLayout relativeLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private String[] navMenuTitles;
private TypedArray navMenuIcons;
private ArrayList<NavDrawerItem> navDrawerItems;
private NavDrawerListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    relativeLayout = (RelativeLayout)findViewById(R.id.sv_left_menu);
    mTitle = mDrawerTitle = getTitle();
    navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
    navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.list_slidermenu); …我一直在尝试在DrawerLayout中设置一个EditText框,但仔细阅读Android培训网站,他们解释说DrawerLayout只允许有两个子视图.如果我想做下一个代码,我应该如何处理它?
<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 -->
<EditText
    android:id="@+id/EditText01"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:hint="Search" >
</EditText>
<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>
android android-layout android-support-library navigation-drawer drawerlayout
所以我正在努力将ActionBarSherlock和导航抽屉添加到以前实现自定义(写得很差)"动作栏"的项目中.一些活动不是使用片段和后台活动进行导航,而是显示和隐藏不同的布局.(也就是说,假设我处于列表模式,然后选择一个按钮进入编辑屏幕.应用程序当前隐藏列表布局并显示另一个布局.).
所以我在所有活动中添加了actionbar sherlock和导航抽屉.我希望能够以编程方式在按下某些按钮时将导航图标从3行切换到箭头.

我无法弄清楚如何做到这一点.有任何想法吗?
谢谢!
我正在关注这篇文章http://derekrwoods.com/2013/09/creating-a-static-navigation-drawer-in-android/
我希望在横向模式下打开抽屉.这是我的onCreate函数.
@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(R.layout.activity_order);
    drawerList = (ListView) findViewById(R.id.left_drawer);
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    FrameLayout frameLayout = (FrameLayout) findViewById(R.id.content_frame);
    if (((ViewGroup.MarginLayoutParams) frameLayout.getLayoutParams()).leftMargin == (int) getResources()
            .getDimension(R.dimen.drawer_size)) {
        drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
        drawerLayout.setScrimColor(Color.TRANSPARENT);
        isDrawerLocked = true;
    }
    // Set the adapter for the list view
    // drawerItems = getResources().getStringArray(R.array.drawerOptions);
    drawerItems = DummyContent.ITEMS
            .toArray(new DummyItem[DummyContent.ITEMS.size()]);
    drawerList.setAdapter(new ArrayAdapter<DummyItem>(this,
            android.R.layout.simple_list_item_1, drawerItems));
    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
            R.drawable.ic_drawer, R.string.action_short,
            R.string.action_short) {
        /** Called when a drawer has settled in a completely closed state. …工具栏未出现在棒棒糖前设备上.我正在使用工具栏的抽屉布局.相同的工具栏适用于其他活动,但与抽屉布局一起使用时则不适用.
带抽屉布局和工具栏的活动
@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_home_screen);
                {
                    /*supportChatImageButton = (ImageButton) findViewById(R.id.homeSupportChatImageButton);
                    orderImageButton = (ImageButton) findViewById(R.id.homeOrderImageButton);*/
                    headerTextView = (TextView) findViewById(R.id.homeHeaderTextView);
                    slidingTabLayout = (SlidingTabLayout) findViewById(R.id.homeSlidingTabLayout);
                    viewPager = (ViewPager) findViewById(R.id.homeViewPager);
                    headerBackgroundImageView = (ImageView)findViewById(R.id.homeHeaderBackgroundImageView);
                    mainContentLayout = (FrameLayout) findViewById(R.id.homeScreenMainContentLayout);
                    hamburgerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
                    hamburgerLinearLayout = (LinearLayout) findViewById(R.id.hamburgerProfileLayout);
                    hamburgerListView = (ListView) findViewById(R.id.hamburgerListView);
                    hamburgerMenu = (RelativeLayout) findViewById(R.id.hamburgerMenu);
                    GetHamburgerListItems();
                    HamburgerListAdapter hamburgerListAdapter = new HamburgerListAdapter(this, hamburgerListItems);
                    hamburgerListView.setAdapter(hamburgerListAdapter);
                    userProfileImageView = (ImageView) findViewById(R.id.userProfileImageView);
                    userProfileNameTextView = (TextView) findViewById(R.id.userProfileNameTextView);
                    if(StorageManager.read(this, "userProfile", new TypeToken<UserProfile>() {}.getType()) != null) {
                        UserProfile userProfile …android android-appcompat navigation-drawer drawerlayout android-toolbar
我的活动NavigationView里面有一个DrawerLayout.
当用户点击NavigationView标题中的按钮时,我想滚动到顶部DrawerLayout/NavigationView带有动画.
看起来NavigationView和DrawerLayout没有提供获取实际滚动位置的方法(getScrollY()并且getScrollX()总是返回0),所以我不能这样做.
如何使用动画滚动到顶部?
<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"
     android:fitsSystemWindows="true">
     <!-- My content -->
     <android.support.design.widget.NavigationView
         android:id="@+id/navigation"
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:layout_gravity="start"
         app:headerLayout="@layout/navigation_view_header"
         app:menu="@menu/my_navigation_items" />
 </android.support.v4.widget.DrawerLayout>
android scroll android-animation drawerlayout android-navigationview
在我的Android应用程序中,我看到以下错误:
setDrawerListener(android.support.v4.widget.Drawer Layout.DrawerListener)'已弃用
我怎么解决这个问题?
在一个答案中,我看到使用addDrawerListener()相反,setDrawerListener但它似乎没有用.
我正在使用Google Design Support Library和DrawerLayout.
建立:
final DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavigationView drawer = (NavigationView) findViewById(R.id.drawer);
if(mDrawerToggle == null) {
    mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, mToolbar, R.string.open, R.string.feather_close);
    drawerLayout.addDrawerListener(mDrawerToggle);
    mDrawerToggle.syncState();
}
当我启动我的应用程序时,会显示汉堡包图标的涟漪效果,但抽屉未打开.当我从左侧滑动至少一次打开抽屉时,汉堡包图标适用于整个运行时.切换按钮或抽屉本身没有特殊的监听器,并且未调用onOptionsItemSelected方法.
请帮我看看会发生什么.
谢谢.
我正在尝试向Android Studio中的现有项目添加导航菜单.但是,按照官方网站上的说明,我<android.support.v4.widget.DrawerLayout ...在我的视图的其余部分添加了一个标记,并在主要活动布局的主ConstraintLayout下,我将示例导航绘制放在其下面:
<android.support.design.widget.NavigationView
        android:id="@+id/navigation"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/my_navigation_items" />
最后一行在构建时会导致一些问题:
Error:error: attribute 'com. ... :menu' not found.
我无法弄清楚为什么会这样.所述app的部分app:menu中的DrawerLayout标签中定义为:xmlns:app="http://schemas.android.com/apk/res-auto"
这似乎也会导致Cannot resolve symbol R我的MainActivity.java文件中出现错误.
无论如何,非常感谢任何帮助!