-1

Я реализовал панель навигации в соответствии с гильдиями Google, но я хочу переместить панель действий вместе с ящиком. Я даже ссылался на How to slide the ActionBar along with the NavigationDrawer, но не смог его достичь.Перемещение панели действий вместе с навигационным ящиком

я хочу чего-то добиться, как показано ниже, без использования третьих сторон LIB:

enter image description here

DrawerActivity:

public abstract class BarcodeBaseActivity extends ActionBarActivity { 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

setSupportActionBar(toolbar); 
//  setTypface(); 

     mTitle = getTitle(); 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
//  drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 

     mDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.navigation_drawer_open, 
       R.string.navigation_drawer_close) { 
      public void onDrawerClosed(View view) { 
       invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
       supportInvalidateOptionsMenu(); 
       history.setSelected(false); 
       help.setSelected(false); 
       unipoints.setSelected(false); 
       promotions.setSelected(false); 
       notifications.setSelected(false); 
       info.setSelected(false); 
       contact.setSelected(false); 
       signout.setSelected(false); 
       drawerOpened = false; 
      } 

      public void onDrawerOpened(View drawerView) { 
       invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
       supportInvalidateOptionsMenu(); 
       getSupportActionBar().setTitle(mTitle); 
       history.setSelected(true); 
       help.setSelected(true); 
       unipoints.setSelected(true); 
       promotions.setSelected(true); 
       notifications.setSelected(true); 
       info.setSelected(true); 
       contact.setSelected(true); 
       signout.setSelected(true); 
       drawerOpened = true; 
      } 

      public void onDrawerSlide(View drawerView, float slideOffset) { 
       invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
       supportInvalidateOptionsMenu(); 
      } 
     }; 
     drawerLayout.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.setDrawerIndicatorEnabled(false); 
     mDrawerToggle.setHomeAsUpIndicator(R.drawable.burger); 
     ValueAnimator anim = ValueAnimator.ofFloat(0, 1); 
     anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
      @Override 
      public void onAnimationUpdate(ValueAnimator valueAnimator) { 
       float slideOffset = (Float) valueAnimator.getAnimatedValue(); 
       mDrawerToggle.onDrawerSlide(drawerLayout, slideOffset); 
      } 
     }); 
     anim.setInterpolator(new DecelerateInterpolator()); 

// You can change this duration to more closely match that of the default animation. 
     anim.setDuration(500); 
     anim.start(); 
     toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       drawerLayout.openDrawer(Gravity.LEFT); 
      } 
     }); 

     drawerLayout.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.syncState(); 
//  drawerLayout.setStatusBarBackgroundColor(getResources().getColor(R.color.colorPrimaryDark)); 

     drawerList = (ListView) findViewById(R.id.drawer_list); 
     View list_header = getLayoutInflater().inflate(R.layout.drawerlist_header, null); 
    drawerItems = getDrawerItems(pos); 
     drawerList.setAdapter(new DrawerListAdapter(this, getLayoutInflater(), drawerItems)); 
     drawerList.setOnItemClickListener(new DrawerItemClickListener()); 


     if (drawerOpened) { 
      history.setSelected(false); 
      help.setSelected(false); 
      unipoints.setSelected(false); 
      promotions.setSelected(false); 
      notifications.setSelected(false); 
      info.setSelected(false); 
      contact.setSelected(false); 
      signout.setSelected(false); 
     } else { 
      history.setSelected(true); 
      help.setSelected(true); 
      unipoints.setSelected(true); 
      promotions.setSelected(true); 
      notifications.setSelected(true); 
      info.setSelected(true); 
      contact.setSelected(true); 
      signout.setSelected(true); 
     } 

     setTitle(mTitle); 
    } 

    @Override 
    public void setTitle(CharSequence title) { 
     mTitle = title; 
     getSupportActionBar().setTitle(mTitle); 
    } 


private class DrawerItemClickListener implements ListView.OnItemClickListener { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Log.d(BarcodeBaseActivity.class.getSimpleName(), "Drawer item clicked at position " + position); 

      /*for (DrawerItem drawerItem : drawerItems) { 
       drawerItem.setSelected(false); 
      } 

      DrawerItem drawerItem = drawerItems.get(position - 1); 
      drawerItem.setSelected(true); 

      HeaderViewListAdapter headerViewListAdapter = (HeaderViewListAdapter) drawerList.getAdapter(); 
      DrawerListAdapter drawerListAdapter = (DrawerListAdapter) headerViewListAdapter.getWrappedAdapter(); 
      drawerListAdapter.notifyDataSetChanged(); 
*/ 
      selectItem(position); 
      for (DrawerItem drawerItem : drawerItems) { 
       drawerItem.setSelected(false); 
      } 
      if (position > 0) { 
       DrawerItem drawerItem = drawerItems.get(position - 1); 
       drawerItem.setSelected(true); 

      } 
      updateDrawer(); 
      SharedPreferences.Editor sharedPreferences = getSharedPreferences(AppConstants.PREFERENCE_SHARED_PREF_NAME, Context.MODE_PRIVATE).edit(); 
      sharedPreferences.putInt(AppConstants.PREFERENCE_LAST_DRAWERITEM_CLICKED, position - 1); 
      sharedPreferences.commit(); 
     } 
    } 

Пожалуйста, помогите мне с какой-то фрагмент кода.

+0

Я не думаю, что это так, то должно быть сделано. Что вы пытаетесь достичь приложения IOS на Android? –

+0

@YuriiTsap, но есть много приложений для Android, которые также реализованы так же, как и приложения ios. Таким образом, это означает, что он может реализоваться и в android, а также –

+0

Да, может быть, но зачем нужен дизайн IOS. У нас есть собственный - материал. Что касается fum - вы можете попытаться добиться этого - но для приложения в реальном мире - не лучший подход. Вы можете попробовать много хаков с флагами Window Manager, а также посмотреть на этот ответ http://stackoverflow.com/a/23954699/3874721 –

ответ

1

Использование SlidingPanelayout предоставленной Android вместо использования панели навигации.

https://developer.android.com/reference/android/support/v4/widget/SlidingPaneLayout.html

http://www.survivingwithandroid.com/2013/10/android-slidingpanelayout-tutorial-2.html

+0

SlidingPaneLayout не перемещает панель действий. И я хочу переместить панель действий вместе с ящиком –

+0

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

+0

Я не понимаю. какой второй макет? –

-1

Добавьте это в DrawerCallbacks

@Override 
public void onDrawerSlide(View drawerView, float slideOffset) { 
    View container = findViewById(R.id.container); 
    container.setTranslationX(slideOffset * drawerView.getWidth() * -1); 
} 
+0

что это за контейнер? –

+0

framelayout, где вы показываете свои фрагменты –