Crouton + SlidingMenu 重叠问题

8

我同时使用SlidingMenuCrouton, 但是我发现滑动菜单会覆盖住 Crouton 的通知。

crouton and slidingmenu overlap

我会报告一个github问题,但我不知道错误属于哪里。
Cyril Mottier在他的Prixing article about in-layout notifications中提到存在3个上下文,左侧菜单有自己的上下文。这样,通知将与其余内容一起滑动。

enter image description here

由于SlidingMenu和Crouton都使用Activity Context,可能无法修复此问题。我们可以轻松调用。
Crouton.cancelAllCroutons();

在显示SlidingMenu之前,但我喜欢Prixing的滑出功能。
希望库的作者能够解决这个问题或提供一些线索。
谢谢!
编辑:
我正在使用SlidingMenu通过创建对象并将其附加到活动。
private void configureSideMenu() {
   mSlidingMenu = new SlidingMenu(this);
   mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
   mSlidingMenu.setFadeDegree(0.35f);
   mSlidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
   mSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
   mSlidingMenu.setMenu(R.layout.menu_frame);
   getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new MySideMenuFragment()).commit();
 }

至于Crouton,我想只有一种使用方法

  Crouton.showText(this, R.string.error_not_logged_in, Style.ALERT);

这里的this是两种情况下相同的Activity


1
你是如何构建SlidingMenu并显示Crouton的?我正在扩展SlidingActivity,但我没有这个问题。 - Nachi
@Nachi 谢谢,看到问题已更新。也许如果我从SlidingActivity扩展会解决这个问题...我会尝试一下,如果它能解决问题,我会在SlidingMenu项目中报告一个错误,因为我不记得阅读过使用库的不同方式(也许我错了,而且有规定)。 - Maragues
1个回答

6
您可以轻松地将Crouton附加到特定的ViewGroup上。
您只需要调用Crouton.makeText(Activity, CharSequence, Style, ViewGroup)Crouton.make(...)Crouton.show(...)即可。
然后创建的Crouton将附加到ViewGroup上,并在SlidingMenu打开时与其父一起滑出。
因此,当您从Fragment创建Crouton时,
Crouton.showText(this, R.string.error_not_logged_in, Style.ALERT, (ViewGroup) getView());

否则,您可以将其添加到任何ViewGroup中(甚至通过资源ID),尽管我建议使用FrameLayout将Crouton附加到其中。

谢谢!我已经成功地实现了你的解决方案,但是要将它扩展到所有屏幕上,我必须检查每个 .xml 文件并在顶部添加一个额外的 View,这听起来非常糟糕和难以维护 :-/ 将其简单地附加到内容 [(ViewGroup) mSlidingMenu.getContent()] 尊重布局重力属性,因此 Crouton 可能会放置在屏幕中央。无论如何,感谢您提供的库和您的时间。 - Maragues

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接