#android #xml #slidingmenu
#Android #xml #slidingmenu
Вопрос:
Справочная информация
Я разрабатываю приложение для Android, которое использует скользящее меню jmeinstein. Поскольку мне нужно было расширить SlidingListActivity, я решил последовать примеру baruckis Android SlidingMenuImplementation, используя такие классы SlidingMenuBuilderBase
, как SlidingMenuListAdapter
, и т.д. Проблема, с которой я сталкиваюсь, заключается в том, что меню, похоже, немного не на странице. Однако самая интересная часть этой проблемы заключается в том, что это иногда случается.
Проблема
Я загрузил частное видео на YouTube, чтобы показать вам, что я имею в виду:
https://www.youtube.com/watch?v=0eYlqRl6F3kamp;feature=youtu.be
Как вы видели из видео, на обеих страницах (все события и мои события) возникла проблема, из-за которой первый пункт меню был слегка обрезан. Однако, случайно, Мои События начали правильно корректировать меню, и, в конце концов, все События сделали то же самое. Но, похоже, я не могу понять, почему это происходит.
Просто чтобы быть абсолютно ясным, я опубликовал изображения ошибки (которые я иногда вижу) и правильное изображение (которое я тоже иногда вижу):
Код
Теперь перейдем к коду. Как я уже сказал, мой код отличается от его прямой реализации jfeinstein, и я следую реализации baruckis, которая должна работать правильно, как показано в примере приложения baruckis.
private void createSlidingMenu(Session session) {
// If nothing is set, than sliding menu wont be created.
if (setSlidingMenu() != null) {
Class<?> builder = setSlidingMenu();
try {
// We use our made base builder to create a sliding menu.
slidingMenuBuilderBase = (SlidingMenuBuilderBase) builder
.newInstance();
slidingMenuBuilderBase.createSlidingMenu(this, session, userName, userId);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
Этот метод вызывается при открытии домашней страницы. Теперь, вот создать скользящее меню:
public void createSlidingMenu(Activity activity, Session session, String userName, String userId) {
this.activity = activity;
// For actual sliding menu creation we use an external open source
// Android library called "SlidingMenu". It can be found at
// "https://github.com/jfeinstein10/SlidingMenu".
// We configure the SlidingMenu to our needs.
menu = new SlidingMenu(activity);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowWidthRes(R.dimen.shadow_width);
menu.setShadowDrawable(R.drawable.shadow);
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
menu.setAboveOffset(R.dimen.above_offset);
menu.setFadeDegree(0.35f);
menu.attachToActivity(activity, SlidingMenu.SLIDING_WINDOW);
menu.setMenu(R.layout.menu_frame);
this.session = session;
this.userName = userName;
System.out.println(userName);
SlidingMenuListFragment slidingMenuListFragment = new SlidingMenuListFragment(userName, userId);
slidingMenuListFragment.setMenuBuilder(this);
// We replace a FrameLayout, which is a content of sliding menu, with
// created list fragment filled with data from menu builder.
activity.getFragmentManager().beginTransaction()
.replace(R.id.menu_frame, slidingMenuListFragment)
.commitAllowingStateLoss();
}
Другие важные примеры кода:
SlidingMenuListFragment.java:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// We get a list from our specially created list data class.
slidingMenuList = SlidingMenuList.getSlidingMenu(getActivity(), userName);
// We pass our taken list to the adapter.
SlidingMenuListAdapter adapter = new SlidingMenuListAdapter(
getActivity(), R.layout.sliding_menu_holo_light_list_row, slidingMenuList, userId);
setListAdapter(adapter);
}
sliding_menu_holo_light_list.xml:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#6F0B0B"
android:divider="#c0c0c0"
android:dividerHeight="2dip"
android:paddingLeft="5dip"
android:paddingRight="5dip" />
sliding_menu_holo_light_list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal" >
<ImageView
android:id="@ id/row_icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:contentDescription="@string/empty_string"
android:padding="10dp" />
<TextView
android:id="@ id/row_title"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical"
android:textColor="#FFFFFF"
android:padding="10dp"
android:text="@string/empty_string"
android:textAppearance="@android:style/TextAppearance.Medium" />
</LinearLayout>
Я пытался решить это в течение нескольких дней. Вся помощь будет принята с благодарностью!
Комментарии:
1. К вашему сведению, тот факт, что ваше видео на YouTube является частным, означает, что никто не может его просмотреть, поэтому мы не видим проблему в действии. Кроме того, я знаю, что это не отвечает на ваш вопрос, но вы можете рассмотреть возможность перехода на панель навигации Google , поскольку проект скользящего меню jfeinstein больше не поддерживается или не обновляется.
2. Хорошо, я изменил настройки конфиденциальности. И хорошо, я подумаю о переключении.