Java 实现左右滑动菜单时的奇怪行为
亲爱的, 我是Android新手,尝试在我的项目中使用滑动菜单。 我想创建一个应用程序,它有两个与Facebook相同的滑动菜单 通过这些步骤,我已将我的应用程序装箱:Java 实现左右滑动菜单时的奇怪行为,java,android,slidingmenu,Java,Android,Slidingmenu,亲爱的, 我是Android新手,尝试在我的项目中使用滑动菜单。 我想创建一个应用程序,它有两个与Facebook相同的滑动菜单 通过这些步骤,我已将我的应用程序装箱: 下载并将滑动菜单库添加到我的工作空间 下载actionbarsherlock库并将其添加到我的工作空间 在滑动菜单库中,我添加了actionbarsherlock作为参考库 在SlidingMenu库中,我使用actionbarsherlock扩展了SlidingActivity.java: 公共类SlidingActivity
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”是滑动活动的一部分,因此在活动中不起作用。相反,您可以从“设置菜单”获得一个菜单,从“设置菜单”获得另一个菜单