【发布时间】:2011-12-27 21:35:45
【问题描述】:
(我已经看到了一些相关的问题,但没有答案,所以如果有人做了类似的事情或者可以为我指出正确的方向......)
标准的 Android SlidingDrawer(以及我正在使用的 Alessandro Crugnola's multi-direction variant)使手柄居中对齐。有没有人实现了一个 SlidingDrawer,它提供了右对齐或左对齐手柄的选项?.. 或者任何人有关于如何去做的任何提示?
【问题讨论】:
(我已经看到了一些相关的问题,但没有答案,所以如果有人做了类似的事情或者可以为我指出正确的方向......)
标准的 Android SlidingDrawer(以及我正在使用的 Alessandro Crugnola's multi-direction variant)使手柄居中对齐。有没有人实现了一个 SlidingDrawer,它提供了右对齐或左对齐手柄的选项?.. 或者任何人有关于如何去做的任何提示?
【问题讨论】:
解决了。在mVertical 是SlidingDrawer 的onLayout(boolean changed, int l, int t, int r, int b) 方法的真实条件(或您正在使用的SlidingDrawer 的任何变体)中,您应该找到以下代码行...
handleLeft = (width - childWidth) / 2;
... 使手柄居中对齐。将其更改为...
handleLeft = l;
...当滑动抽屉设置为垂直滑动(即从下到上或从上到下)时左对齐手柄,或将其更改为...
handleLeft = r - handleWidth;
... 右对齐句柄。
同样,如果滑动抽屉设置为水平滑动(即从右到左或从右到左),在onLayout(boolean changed, int l, int t, int r, int b)方法的mVertical为假条件下,找到下面这行代码...
handleTop = (height - childHeight) / 2;
...并将其更改为...
handleTop = t;
... 顶部对齐手柄,或...
handleTop = b - handleHeight;
... 底部对齐句柄。编码愉快!
【讨论】:
假设您使用默认(垂直)方向: 如果要将抽屉手柄向左移动,请将滑动抽屉的 android:layout_marginRight 值设置为某个正数。如果您希望手柄向右移动,请执行相反的 android:layout_marginLeft。滑动抽屉本身没有右/左对齐。如果您想要更动态的对齐方式,则必须使用布局来获得所需的效果。
【讨论】:
myHandle.getLayoutParams() 返回的View.LayoutParams 对象转换为ViewGroup.MarginLayoutParams 对象,则会引发异常。我什至尝试了myHandle.setRight(0) 方法,但它被忽略了。看起来我需要进去更改滑动抽屉代码,但我看了看,无法弄清楚把手的位置以及如何根据需要进行更改。欢迎提出建议!..