AnZ*_*AnZ 7 android drag-and-drop android-layout android-viewpager
当项目在屏幕边缘(左侧或右侧)附近拖动时,我需要实现当前标签更改.
拖拽N下降功能和当前选项卡切换没有问题.我只是无法正确处理此事件 - 当拖动项目靠近屏幕边缘时.
你会怎么做?
我尝试了什么:
<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"
... />
Run Code Online (Sandbox Code Playgroud)
我们的想法是在切换区域拖动项目时以编程方式更改当前选项卡.
但是该DragEvent.ACTION_DRAG_ENTERED区域的事件从未发生过(我相信如此)GridView整个屏幕占用并且只是与切换区域重叠.
我已经尝试在触发拖动启动事件时将这些区域带到前面.但由于某种原因,这不起作用.
FrameLayout toggleView = (FrameLayout) v;
toggleView.bringToFront();
toggleView.requestLayout();
toggleView.invalidate();
Run Code Online (Sandbox Code Playgroud)
如果有人遇到这样的问题,请分享您的经验.或许还有另一个更好的解决方案.请给我一个提示.
我认为三个视图(切换区域和 )的父级GridView是RelativeLayout. 首先,将GridView, 替换为其父级的第一个子级。其余布局保持原样。
其次,为了用View.OnDragListener界面捕获drop事件,您需要在.conf文件中将最低SDK版本设置为11 AndroidManifest.xml。之后,您可以将侦听器传递到切换区域:
View.OnDragListener dragListener = new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
// you can check for event.ACTION_DRAG_ENTERED here
return true;
}
};
FrameLayout leftToggleArea = (FrameLayout) findViewById(R.id.left_toggle_area);
leftToggleArea.setOnDragListener(dragListener);
Run Code Online (Sandbox Code Playgroud)
如果您仍然遇到问题,请发布更多代码。
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |