【发布时间】:2015-12-18 14:31:51
【问题描述】:
当项目被拖动到屏幕边缘(左或右)附近时,我需要实现当前选项卡更改。
拖放功能和当前标签切换没有问题。我只是无法正确处理此事件 - 当拖动的项目靠近屏幕边缘时。
你会怎么做?
我尝试了什么:
<FrameLayout
android:id="@+id/left_toggle_area"
android:layout_width="30dp"
android:layout_height="fill_parent"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true">
</FrameLayout>
<FrameLayout
android:id="@+id/right_toggle_area"
android:layout_width="30dp"
android:layout_height="fill_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true">
</FrameLayout>
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
... />
这个想法是在切换区域拖动项目时以编程方式更改当前选项卡。
但该区域上的事件DragEvent.ACTION_DRAG_ENTERED 从未发生过,因为(我相信如此)GridView 占据了整个屏幕并简单地与切换区域重叠。
我已经尝试在触发拖动开始事件时将这些区域置于最前面。但由于某种原因,这不起作用。
FrameLayout toggleView = (FrameLayout) v;
toggleView.bringToFront();
toggleView.requestLayout();
toggleView.invalidate();
如果有人遇到这样的问题,请分享您的经验。或者也许有另一个更好的解决方案。请给我一个提示。
【问题讨论】:
-
我发布了我当前的解决方案。但仍然更喜欢使用有问题的拖动区域。因此,如果有人有想法,请欢迎。
-
所以您不想放下并仍然更改标签?
-
是的,我想用
DragEvent.ACTION_DRAG_ENTERED事件改变当前标签 -
你要拖动哪个项目,放在哪里?
-
现在明白了......尝试使用带有视图标签的空视图容器而不是框架布局。
标签: android android-layout drag-and-drop android-viewpager