【问题标题】:How to shift parent layout to right without changing inner components layout?如何在不更改内部组件布局的情况下将父布局向右移动?
【发布时间】:2012-06-29 18:05:41
【问题描述】:

在我的应用程序中,我希望在左侧有滑动菜单,就像 facebook 一样。

在我的previous question 中,我提出了同样的担忧,感谢this answer,我可以找到一种使用this library 向右滑动布局的方法。但是,我发现,该库实际上并没有滑动布局,而只是截取屏幕截图并将图像向右滑动,因为布局上的组件不可点击。我需要这些组件是可点击的。所以,我尝试了一种新的方法来实现这一点,将滑出菜单放在左侧,将其默认可见性保持为View.GONE,并使其在单击左上角“显示/隐藏菜单”按钮时可见,如下图所示。

之前的布局:

现在当我点击“显示/隐藏菜单”按钮时,布局类似于-

之后的布局:

如您所见,右侧的布局会缩小,因此即使我已将 android:minWidth 属性设置为右侧的这两个按钮及其父级 @,“其他视图”按钮也会更改其宽度987654328@.

所以我的问题是,有没有办法在不改变内部组件宽度/布局的情况下将布局向右移动?因此,在我可以查看的任何区域中,它将被该区域中可以填充的内容的任何部分填充。

【问题讨论】:

  • 我也面临同样的问题..你有解决方案了吗?
  • 还没有。而且解决方案并不是那么简单,否则编写这些库的人早就实现了。我个人觉得不可能,因为我们没有使用webview,否则,它是可能的。如果我找到一些,肯定会发布答案。
  • 我试图解决它.. 它现在对我有用。将其发布为可能的解决方案。

标签: android facebook android-layout visibility


【解决方案1】:

这个问题可以这样解决:

  • 使用内部创建框架布局:第一个左侧菜单包含 3 个按钮,第二个布局包含其他两个按钮(显示/隐藏和其他视图)。这样,第二个布局在 menu 前面(因为它是 fill_parent)。

  • 在显示/隐藏按钮的 onClick 中执行翻译动画:假设您的菜单是 200 像素宽,将第二个布局向右移动 200。

  • 在 onAnimationEnd 中,将边距设置为第二个布局,如下所示:secondLayoutLayoutParams.setMargins(200, 0, -200, 0);

关闭菜单类似:将第二个布局向左移动 200 并将所有边距设置为 0。

通过设置边距可以避免按钮收缩。

希望对你有帮助

【讨论】:

  • 谢谢。有效。虽然我没有使用 FrameLayout,但我只是在运行时将边距设置为正确的布局。
【解决方案2】:

@Rajkiran - 我有一个根布局,其中包含我的左右布局。

我的右侧布局将 layout_height 设置为 'match_parent' & layout_widht 也设置为 'match_parent'

现在,当我的左侧滑动面板出现在按钮单击时,我以编程方式重置右侧布局的宽度和高度以匹配根布局的宽度和高度

这完美地将正确的布局向右移动,而不会包裹内部组件。

为了以编程方式更改高度和宽度,我使用了这个 -

                rootLayoutParams = new LayoutParams(rootLayout.getWidth(), rootLayout.getHeight());

                rightLayout.setLayoutParams(rootLayoutParams);

希望对你也有帮助。

【讨论】:

  • 您给出的答案不是将布局向右移动,而是在左侧布局上方。可以发一下xml吗?
猜你喜欢
  • 2017-04-10
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
相关资源
最近更新 更多