gpt4 book ai didi

android - 如何在 Android 中创建迷你抽屉菜单?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:02 24 4
gpt4 key购买 nike

我正在寻找像谷歌示例中那样创建一个迷你抽屉菜单:

mini-drawer menu

我试图创建一个始终停留在 ParentLeft 上的布局,并且菜单在打开时会溢出它,但它看起来并不自然。有谁知道我该怎么做?


更新

我试过另一种方法。要听菜单滑动,并在它足够关闭时捕捉,然后我可以设置菜单大小,并保持图标可见,但文本消失。

@Override
public void onDrawerSlide(float v, int i) {
Log.d("onDrawerSlide", "v=" + v + " i=" + i);
if (i<previewsI && decreasingCount > 3) {
// check if menu is closed enough
if (i <100 && i > 50) {
// change menu size, and force menu to keep opened
mDrawer.setMenuSize(Utils.dpToPx(70, getApplicationContext()));
mDrawer.openMenu();
// TODO: hide menu items title, and let only icons to be visible

}
}
else if (i < previewsI)
// make sure the menu is closing
decreasingCount++;

previewsI = i;
}

它可以工作,但没有我希望的那么顺利。现在我不得不再次顺利地打开它。无论如何,我认为这不是一个优雅的解决方案。我相信一定有更好的。

最佳答案

我知道这是一个很老的问题,我不确定你是否愿意使用图书馆。但是 MaterialDrawer库将提供一个 MiniDrawer 实现,包括到普通抽屉的转换。

MaterialDrawer

如屏幕截图所示,MiniDrawer 也支持徽章,并且它还带有一个 AccountSwitcher。还有其他一切。

MiniDrawer 使用 Crossfader允许交叉淡入淡出效果的库。 sample application Crossfader 库还展示了如何使用 MaterialDrawer

实现这一点

这是创建所示示例的代码(您也可以在 repository on GitHub 找到它):

DrawerBuilder builder = new DrawerBuilder()
.withActivity(this)
.withToolbar(toolbar)
.withInnerShadow(true)
.addDrawerItems(
//.. add some items ..
) // add the items we want to use with our Drawer
.withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
@Override
public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
//some actions inside the listener

return miniResult.onItemClick(drawerItem);
}
})
.withSavedInstance(savedInstanceState);

// build the main drawer
result = builder.buildView();
// build the miniDrawer
miniResult = new MiniDrawer().withDrawer(result).withInnerShadow(true).withAccountHeader(headerResult);

//define the width of the normal drawer, and the minidrawer
int first = (int) UIUtils.convertDpToPixel(300, this);
int second = (int) UIUtils.convertDpToPixel(72, this);

//create the Crossfader used to hook the MiniDrawer and the normal drawer together. This also handles the crossfade effect.
crossFader = new Crossfader()
.withContent(findViewById(R.id.crossfade_content))
.withFirst(result.getSlider(), first)
.withSecond(miniResult.build(this), second)
.withSavedInstance(savedInstanceState)
.build();

// inform the MiniDrawer about the crossfader.
miniResult.withCrossFader(new CrossfadeWrapper(crossFader));

关于android - 如何在 Android 中创建迷你抽屉菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31154027/

24 4 0