Уважаемые,
Я новичок в Android и пытаюсь использовать SlidingMenu в своем проекте. Я хочу создать приложение с двумя скользящими меню, как в Facebook.
С помощью этих шагов я создал свое приложение:
- Загрузите и добавьте библиотеку SlidingMenu в мое рабочее пространство.
- Загрузите и добавьте библиотеку actionbarsherlock в мою рабочую область.
- В библиотеку SlidingMenu я добавляю actionbarsherlock в качестве справочной библиотеки.
- В библиотеке SlidingMenu я расширяю
SlidingActivity.java
с помощью actionbarsherlock:public class SlidingActivity extends SherlockActivity implements SlidingActivityBase
- В своем приложении я добавляю ссылку на библиотеку SlidingMenu.
- В моем приложении я расширяю свою основную деятельность, чтобы использовать
SlidingActivity
:public class MainMenu extends SlidingActivity
Код моей основной деятельности:
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.sliding_menu_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>
И menu.setSecondaryMenu(R.layout.vehicles_tree);
покажет:
<?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_main_menu);
, я заметил это, изменив прикрепленный макет.
Я не хочу четвертый экран, что я делаю не так?
С уважением, Али Аласвад