SlidingMenu Android Спорадическая проблема

#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. Хорошо, я изменил настройки конфиденциальности. И хорошо, я подумаю о переключении.