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