Отставание Android SlidingMenu при первом использовании

У меня возникли некоторые проблемы с библиотекой скользящего меню из jfeinstein10: https://github.com/jfeinstein10/SlidingMenu

Проблема, которую я наблюдаю, заключается в том, что при первом использовании, когда открывается меню, оно отстает, показывая некоторое черное пространство. Затем, когда я закрываю его и снова использую, все гладко, нечего объявлять.

В основном у меня есть действие, расширяющее SlidingFragmentActivity, и 2 фрагмента. Один для левого меню, а другой для основного контента.

Вот как я это реализовал, я изучаю это, но я действительно не знаю, что я пропустил:

public class CavendishSlidingFragmentActivity extends SlidingFragmentActivity {

private final String TAG = CavendishSlidingFragmentActivity.class.getName();

protected FragmentManager fragmentManager;
protected Fragment mContent;

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    fragmentManager = getSupportFragmentManager();

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    getSlidingMenu().setBehindOffset((int) (metrics.widthPixels * 0.2));
}

public void onClickMenu(View v)
{

    if (getSlidingMenu().isMenuShowing())
        getSlidingMenu().showContent();
    else
        getSlidingMenu().showMenu();
}

public void onClickMenuItem(View v)
{

    Long position = (Long) v.getTag();
    switch (position.intValue())
    {
        case Utils.CAT_RESTAURANT:
            showFragment(new RestaurantFragment());
            break;
        case Utils.CAT_SLEEP:
            showFragment(new SleepFragment());
            break;
        case Utils.CAT_DISCOVER:
            showFragment(new DiscoverFragment());
            break;
        case Utils.CAT_TRANSPORT:
            showFragment(new TransportFragment());
            break;
    }
}

private void showFragment(Fragment fragment)
{
    if (mContent != fragment)
    {
        mContent = fragment;
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.main_fragment, fragment);
        fragmentTransaction.commit();
    }

    getSlidingMenu().showContent();
}
}

MainActivity.java

public class MainActivity extends CavendishSlidingFragmentActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setBehindContentView(R.layout.fragment_menu);
    setContentView(R.layout.fragment_main);

    // set the Above View Fragment
    if (savedInstanceState != null)
        mContent = fragmentManager.getFragment(savedInstanceState, "mContent");
    if (mContent == null)
    {
        mContent = new RestaurantFragment();
    }

    fragmentManager
            .beginTransaction()
            .replace(R.id.main_fragment, mContent)
            .commit();
}

@Override
public void onSaveInstanceState(Bundle outState)
{
    super.onSaveInstanceState(outState);
    fragmentManager.putFragment(outState, "mContent", mContent);
}

}

Я могу предоставить дополнительный код, но я думаю, что проблема может быть здесь, поскольку меню рисуется при первом использовании, вызывая отставание. Я считаю, что мне нужно заставить меню быть нарисованным, прежде чем показывать его.


person Tíbó    schedule 28.04.2014    source источник


Ответы (1)


Похоже, что-то не так с библиотекой при рендеринге меню во время его открытия. Думаю, мой дизайн не соответствовал библиотеке, поэтому я просто перешел к стандартному навигационному ящику Android. Немного отличается поведением, но дизайн остается неизменным, у меня отлично работает.

person Tíbó    schedule 04.05.2014