0

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

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

之前的布局:

单击显示/隐藏菜单按钮之前的布局

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

之后的布局:

单击显示/隐藏菜单按钮后的布局

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

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

4

2 回答 2

1

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

我的正确布局将 layout_height 设置为 'match_parent' & layout_widht 也设置为 'match_parent'

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

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

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

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

                rightLayout.setLayoutParams(rootLayoutParams);

希望它也能帮助你。

于 2012-07-03T04:31:23.427 回答
1

这个问题可以这样解决:

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

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

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

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

通过设置边距,您将避免按钮收缩。

希望能帮助到你

于 2012-07-02T12:26:04.157 回答