我需要能够在列出第一个列表视图下面的另一个列表视图的同时将列表视图拖动到左侧和视图之外.我该怎么做呢?
解决方法:
您可以使用OntouchListener并在ACTION_MOVE上调整大小或移动某些视图.记得调用setClickable(true)以确保调用ACTION_MOVE.
下面是滑动视图的示例:
布局:
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <linearLayout androID:ID="@+ID/background_vIEw" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> (more content) </linearLayout> <linearLayout androID:ID="@+ID/slIDing_vIEw" androID:layout_alignParentBottom="true" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content"> <VIEw androID:ID="@+ID/draggable_vIEw" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content"/> (more content) </linearLayout></relativeLayout>
设置视图:
VIEw slIDingVIEw = ...VIEw draggableVIEw = ... //placed insIDe slIDingVIEw, this is where you touch and dragdraggableVIEw.setontouchListener(new touchListener(slIDingVIEw));draggableVIEw.setClickable(true); //if not set, only ACTION_DOWN gets called, ACTION_MOVE doesn't
监听器:
private class touchListener implements VIEw.OntouchListener{ VIEw slIDingVIEw; int initHeight; float initPos; VIEwGroup.LayoutParams params; private touchListener(VIEw slIDingVIEw) { this.slIDingVIEw = slIDingVIEw; } @OverrIDe public boolean ontouch(VIEw v, MotionEvent event) { if(params == null){ params = slIDingVIEw.getLayoutParams(); } switch (event.getActionMasked()){ case ACTION_DOWN: //get initial state initHeight = slIDingVIEw.getHeight(); initPos = event.getRawY(); break; case ACTION_MOVE: //do the slIDing float dPos = initPos - event.getRawY(); params.height = Math.round(initHeight + dPos); slIDingVIEw.requestLayout(); //refresh layout break; } return false; } }
注意:如果仍未调用ACTION_MOVE,请尝试在setClickable之外调用setFocusable.当我的“可拖动视图”是TextVIEw时,我不需要这样做.
总结以上是内存溢出为你收集整理的如何在Android中执行拖动幻灯片视图全部内容,希望文章能够帮你解决如何在Android中执行拖动幻灯片视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)