Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实现左右滑动菜单时的奇怪行为_Java_Android_Slidingmenu - Fatal编程技术网

Java 实现左右滑动菜单时的奇怪行为

Java 实现左右滑动菜单时的奇怪行为,java,android,slidingmenu,Java,Android,Slidingmenu,亲爱的, 我是Android新手,尝试在我的项目中使用滑动菜单。 我想创建一个应用程序,它有两个与Facebook相同的滑动菜单 通过这些步骤,我已将我的应用程序装箱: 下载并将滑动菜单库添加到我的工作空间 下载actionbarsherlock库并将其添加到我的工作空间 在滑动菜单库中,我添加了actionbarsherlock作为参考库 在SlidingMenu库中,我使用actionbarsherlock扩展了SlidingActivity.java: 公共类SlidingActivity

亲爱的,

我是Android新手,尝试在我的项目中使用滑动菜单。 我想创建一个应用程序,它有两个与Facebook相同的滑动菜单

通过这些步骤,我已将我的应用程序装箱:

  • 下载并将滑动菜单库添加到我的工作空间
  • 下载actionbarsherlock库并将其添加到我的工作空间
  • 在滑动菜单库中,我添加了actionbarsherlock作为参考库
  • 在SlidingMenu库中,我使用actionbarsherlock扩展了
    SlidingActivity.java
    公共类SlidingActivity扩展Sherlock活动实现SlidingActivityBase
  • 在我的应用程序中,我添加了对滑动菜单库的引用
  • 在我的应用程序中,我扩展了我的主要活动以使用
    slidengactivity
    public class主菜单扩展了滑动活动
  • 我的主要活动代码:

    import android.app.ActionBar;
    import android.os.Bundle;
    import android.view.KeyEvent;
    
    import com.actionbarsherlock.view.MenuInflater;
    import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
    import com.jeremyfeinstein.slidingmenu.lib.app.SlidingActivity;
    
    public class MainMenu extends SlidingActivity {
        SlidingMenu  menu;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            if (enableHomeIconActionBack() || enableHomeIconActionSlidingMenu()) {
                ActionBar actionBar = getActionBar();
                if (actionBar != null){
                    actionBar.setDisplayHomeAsUpEnabled(true);
                }
            }
    
            setContentView(R.layout.activity_main_menu);
            setBehindContentView(R.layout.activity_main_menu);
    
            menu = new SlidingMenu(this);
            menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
            menu.setMode(SlidingMenu.LEFT_RIGHT);
            menu.setShadowWidthRes(R.dimen.sliding_menu_shadow_width);
            menu.setShadowDrawable(R.drawable.shadow);
            menu.setBehindOffsetRes(R.dimen.sliding_menu_offset);
            menu.setFadeDegree(0.35f);
            menu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);
            menu.setMenu(R.layout.sliding_menu_frame);
    
            menu.setSecondaryMenu(R.layout.vehicles_tree);
            menu.setSecondaryShadowDrawable(R.drawable.shadow);
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            MenuInflater inflater = getSupportMenuInflater();
            inflater.inflate(R.menu.main_menu, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {
            switch (item.getItemId()) {
            case android.R.id.home:
                if (enableHomeIconActionSlidingMenu()
                        && menu != null) {
                    menu.toggle();
                } else if (enableHomeIconActionBack()) {
                    onCustomBackPressed();
                }
                return true;
            default:
                return super.onOptionsItemSelected(item);
            }
        }   
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                onCustomBackPressed();
                return true;
            default:
                return super.onKeyDown(keyCode, event);
            }
        }
    
        // If sliding menu is showing, we need to hide it on the first back button
        // press.
        private void onCustomBackPressed() {
            if (menu != null
                    && menu.isMenuShowing()) {
                menu.toggle();
            } else {
                this.onBackPressed();
            }
        }
    
        /**
         * Sets activity home icon to have up icon and on press act as device back
         * button press.
         * 
         * @return Activation state.
         */
        public boolean enableHomeIconActionBack() {
            return true;
        }
    
        /**
         * Sets activity home icon to be as a sliding menu invoke icon and on press
         * call toggle command for the sliding menu.
         * 
         * @return Activation state.
         */
        public boolean enableHomeIconActionSlidingMenu() {
            return true;
        }   
    }
    
    现在,
    menu.setMenu(R.layout.slide\u menu\u frame)将显示:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FFFF00FF" >
    </RelativeLayout>
    
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:background="#FF0F00FF">
    </RelativeLayout>
    
    以下快照描述了这种奇怪的行为:

  • 主要活动
  • 屏幕上向右滑动
  • 屏幕上向左滑动
  • 当您从屏幕左边缘向右滑动时。此活动覆盖整个屏幕,并显示附加到
    setBehindContentView(R.layout.activity\u主菜单)的活动,我注意到通过更改附加的布局
    我不想要第四屏,我做错了什么

    关于,, 阿里·阿拉斯瓦德

    setBehindContentView(R.layout.activity_main_menu);
    
    这将设置主菜单的布局(向左滑动时会发生什么情况),因此您应该将其更改为使用
    R.layout.sliding_menu_frame
    并删除
    setMenu(R.layout.sliding_menu_frame)


    我不确定为什么调用
    setMenu
    不会覆盖它,但它似乎不会覆盖它。

    这里有一个Android库,允许您轻松创建带有滑入菜单的应用程序。您可以在Android应用程序中使用它,前提是您引用此项目并在应用程序中包含许可证。谢谢

    更改此行

    public class MainMenu extends SlidingActivity {
    
    public class MainMenu extends Activity {
    
    这条线

    public class MainMenu extends SlidingActivity {
    
    public class MainMenu extends Activity {
    

    SlidingActivity将带有“setBehindContentView”的第4号行为扩展为正常的android“Activity”,因此将其更改回android“Activity”将删除不需要的行为

    @it's not work for me,当我将SlidingActivity更改为Activity时,该活动无法识别“setBehindContentView” method@Lalit谷歌发布了DroperLayout:我更喜欢在出现官方工具时使用它们,所以我会改为使用。如果仍要使用滑动菜单库,“setBehindContentView”是滑动活动的一部分,因此在活动中不起作用。相反,您可以从“设置菜单”获得一个菜单,从“设置菜单”获得另一个菜单