标签: drawerlayout

DrawerLayout 阻止调用 MainActivity.onTouchEvent()

我有一个应用程序可以覆盖 的onTouchEvent(MotionEvent ev)MainActivity确定Two-Finger-SwipePich-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;
    }
Run Code Online (Sandbox Code Playgroud)

这里的问题是抽屉无法正确打开。抽屉卡住了,如这篇文章中所述: DrawerLayout getting 卡在 swipe 上

是否可以将 传输TouchEvent到 MainActivity 来处理 MultiTouchDetection?或者我必须处理这个问题CustomDrawerLayout

更新1

首先,我不得不说,如果我从左边缘滑动,抽屉只会卡住。通过单击ActionBar抽屉中的抽屉图标,效果很好。TouchEvent使用以下代码传输作品。但前提是抽屉打开了!否则Activity.onTouchEvent不叫!

    // onTouchEvent of …
Run Code Online (Sandbox Code Playgroud)

android touch-event drawerlayout

5
推荐指数
1
解决办法
2794
查看次数

关于DrawerLayout的错误(IllegalArgumentException:查看android.widget.RelativeLayout不是滑动抽屉)

我正在学习如何使用Android的导航抽屉.我在布局xml文件中创建了一个relativeLayout,并将两个部分(FrameLayout和Listview)放在RelativeLayout中.但是我收到以下错误:

java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.slidingtest/com.slidingmenu.MainActivity}:java.lang.IllegalArgumentException:查看android.widget.RelativeLayout@423c0dc0不是滑动抽屉

ClassCastException android.widget.FrameLayout $ LayoutParams to android.support.v4.widget.DrawerLayout $ LayoutParams

我找到了这个网页,但仍无法解决我的问题.有人可以帮帮我吗?谢谢...

这是我的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); …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments drawerlayout

5
推荐指数
1
解决办法
1856
查看次数

DrawerLayout中的EditText

我一直在尝试在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>
Run Code Online (Sandbox Code Playgroud)

android android-layout android-support-library navigation-drawer drawerlayout

4
推荐指数
1
解决办法
8329
查看次数

在Android ActionBar上设置导航图标

所以我正在努力将ActionBarSherlock和导航抽屉添加到以前实现自定义(写得很差)"动作栏"的项目中.一些活动不是使用片段和后台活动进行导航,而是显示和隐藏不同的布局.(也就是说,假设我处于列表模式,然后选择一个按钮进入编辑屏幕.应用程序当前隐藏列表布局并显示另一个布局.).

所以我在所有活动中添加了actionbar sherlock和导航抽屉.我希望能够以编程方式在按下某些按钮时将导航图标从3行切换到箭头.

在此输入图像描述

我无法弄清楚如何做到这一点.有任何想法吗?

谢谢!

android android-actionbar drawerlayout

4
推荐指数
2
解决办法
1万
查看次数

旋转更改时切换Android导航抽屉的DrawerLockMode.

我正在关注这篇文章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. …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer drawerlayout

4
推荐指数
2
解决办法
3352
查看次数

工具栏没有出现在棒棒糖前设备中

工具栏未出现在棒棒糖前设备上.我正在使用工具栏的抽屉布局.相同的工具栏适用于其他活动,但与抽屉布局一起使用时则不适用.

带抽屉布局和工具栏的活动

@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 …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat navigation-drawer drawerlayout android-toolbar

4
推荐指数
1
解决办法
1040
查看次数

在NavigationView中滚动动画

我的活动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>
Run Code Online (Sandbox Code Playgroud)

android scroll android-animation drawerlayout android-navigationview

4
推荐指数
1
解决办法
1539
查看次数

为什么方法setDrawerListener已被弃用?如何解决?

在我的Android应用程序中,我看到以下错误:

setDrawerListener(android.support.v4.widget.Drawer Layout.DrawerListener)'已弃用

我怎么解决这个问题?

在一个答案中,我看到使用addDrawerListener()相反,setDrawerListener但它似乎没有用.

android drawerlayout deprecation-warning

4
推荐指数
1
解决办法
1万
查看次数

ActionBarDrawerToggle在第一次滑动之前不会打开抽屉

我正在使用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();
}
Run Code Online (Sandbox Code Playgroud)

当我启动我的应用程序时,会显示汉堡包图标的涟漪效果,但抽屉未打开.当我从左侧滑动至少一次打开抽屉时,汉堡包图标适用于整个运行时.切换按钮或抽屉本身没有特殊的监听器,并且未调用onOptionsItemSelected方法.

请帮我看看会发生什么.

谢谢.

android drawerlayout

4
推荐指数
1
解决办法
465
查看次数

DrawerLayout和NavigationView - 未找到属性"菜单"

我正在尝试向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" />
Run Code Online (Sandbox Code Playgroud)

最后一行在构建时会导致一些问题:

Error:error: attribute 'com. ... :menu' not found.
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚为什么会这样.所述app的部分app:menu中的DrawerLayout标签中定义为:xmlns:app="http://schemas.android.com/apk/res-auto"

这似乎也会导致Cannot resolve symbol R我的MainActivity.java文件中出现错误.

无论如何,非常感谢任何帮助!

java xml android android-layout drawerlayout

4
推荐指数
1
解决办法
3131
查看次数