如何干净地叠加ScrollableViews Android中(How to cleanly sup

2019-10-28 13:16发布

为了实现导航条翼的Facebook ,我有以下布局配置:

<FrameLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
>
   <!-- This is the Lower Layer hosting the navbar -->
   <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
   >
      <!-- ListView representing the navbar -->
      <ListView 
       />
   </LinearLayout>

   <!-- This is the Top Layer hosting the Content -->
   <FrameLayout 
      android:layout_width="match_parent"
      android:layout_height="match_parent"
   > 
      <!-- This is where the View of the Content will be injected -->
   </FrameLayout>
</FrameLayout>

因此,基本的想法是,当我想打开导航栏我只是顶层转移到右侧和导航栏将被揭示。 现在这个效果很好,我可以与导航栏的交互ListView为了通过应用浏览,只要是被内部注入的看法TopLayer是不是ScrollableView (像另一个ListView ,一个ScrollViewWebView )。

例如,当TopLayerWebView的实例,我不能滚动,并与导航栏的互动ListView ,因为它是WebView是获取滚动(althoough我把它转移到右侧)。

我想这是不平凡的叠加许多ScrollableView的,但我希望有黑客来克服这些问题。

谢谢你的帮助!

编辑

顺便说一句,这是我如何转变的TopLayer视图(使用TranslateAnimation ):

TranslateAnimation translateAnim = new TranslateAnimation(0.0F, mListView.getWidth(), 0.0F, 0.0F);
translateAnim.setDuration(..);
translateAnim.setFillAfter(true);
mTopLayerView.startAnimation(translateAnim);

Answer 1:

根据我的应用程序 - Android的UI模式(https://play.google.com/store/apps/details?id=com.groidify.uipatterns),还有Facebook的导航和动画的2个样本实现,这就是:

  • Android的滑动菜单演示: https://github.com/gitgrimbo/android-sliding-menu-demo
  • 图形用户界面的滑动侧边栏: https://github.com/walkingice/gui-sliding-sidebar

你可以去尝试,如果它的工作原理。



Answer 2:

原来,问题不是由于叠加ScrollableView S或什么,但这样的事实:当使用TranslateAnimation逻辑位置:动画视图(即不可视)仍然与原来的位置。 因此,当我以为我点击导航的项目,我实际上与互动ContentView ,我认为已经移动了。

现在,我使用ObjectAnimator它修正这个问题,它工作得很好。 我只需要确保与预蜂窝设备的兼容性(我想使用的NineOldAndroids这件事。如果某人知道任何其他替代解决这一问题使用旧动画API不当,随意回答这个问题 )。



文章来源: How to cleanly superpose ScrollableViews in Android