Перемещение всего компата ActionBar на дисплее Navigation Drawer
Я пытаюсь добиться эффекта перемещения всей панели действий вместе с ее содержимым при отображении панели навигации по щелчку или слайду. Я использую Compat ActionBar, предоставленный и реализовавший Навигационный ящик при создании проекта, и у меня есть то, что ящик Nav отображается по умолчанию, что означает, что он скользит под ActionBar и покрывает содержимое. То, что я хотел достичь, это что-то вроде этого:
Я немного новичок в настройке панели навигации, и мои поиски пока не дают результата, который я ищу, поэтому надеюсь, что кто-то может помочь мне в этом. Надеюсь, что есть простой способ достичь этого без использования каких-либо библиотек.
1 ответ
Переопределите навигационный ящик следующим образом.
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
frame = (FrameLayout) findViewById(R.id.content_frame);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.acc_drawer_open, R.string.acc_drawer_close)
{
@SuppressLint("NewApi")
public void onDrawerSlide(View drawerView, float slideOffset)
{
float moveFactor = (mDrawerList.getWidth() * slideOffset);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
frame.setTranslationX(moveFactor);
}
else
{
TranslateAnimation anim = new TranslateAnimation(lastTranslate, moveFactor, 0.0f, 0.0f);
anim.setDuration(0);
anim.setFillAfter(true);
frame.startAnimation(anim);
lastTranslate = moveFactor;
}
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);