导航抽屉移动整个屏幕

时间:2014-08-27 19:39:59

标签: android navigation-drawer

我试图制作移动整个屏幕的导航抽屉(整个高度,而不是宽度)。我没有使用ActionBar和其他库,只是默认的Android抽屉。有人有任何例子吗?

2 个答案:

答案 0 :(得分:1)

您需要做的是按抽屉移动到的像素数量设置内容视图的translationX属性。

http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.DrawerListener.html的实施中,您应该实施onDrawerSlide(View drawerView, float slideOffset)

在此方法中,您应该添加此行。 mDrawerLayout.findViewById(R.id.your_content_id).setTranslationX(drawerView.getWidth() * slideOffset);

这应该可以解决问题。

答案 1 :(得分:1)

实现DrawerListener(作为参数传递布局的R.id):

import android.animation.ObjectAnimator;
import android.support.v4.widget.DrawerLayout.DrawerListener;
import android.view.View;

public class DrawerLayoutListener implements DrawerListener {

private View _contentDrawer;
private int _idView;

public DrawerLayoutListener(int idView) {
    _idView = idView;
}

@Override
public void onDrawerClosed(View arg0) {}

@Override
public void onDrawerOpened(View arg0) {}

@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
    if (_contentDrawer == null) _contentDrawer = ((View) drawerView.getParent()).findViewById(_idView);
    float moveFactor = (drawerView.getWidth() * slideOffset);
    ObjectAnimator.ofFloat(_contentDrawer, "translationX", moveFactor).setDuration(0).start();
}

@Override
public void onDrawerStateChanged(int arg0) {}

}

并将其设置为DrawerLayout的收听者:

drawer_layout.setDrawerListener(new DrawerLayoutListener(R.id.content_frame));