android - 拖动后如何使 EditText 可编辑

标签 android

我正在创建一个可拖动的 editText,我使用 editText 来允许用户更改文本。但我现在的问题是我无法再编辑文本,因为它检测到文本的触摸/拖动。

有什么解决办法吗?

private final class MyTouchListener implements OnTouchListener {
    public boolean onTouch(View view, MotionEvent motionEvent) {

        switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) 
        {
            case MotionEvent.ACTION_DOWN:
             ClipData data = ClipData.newPlainText("", "");
              DragShadowBuilder shadowBuilder = new DragShadowBuilder(view);
              view.startDrag(data, shadowBuilder, view, 0);
              view.setVisibility(View.VISIBLE);
             break;
            case MotionEvent.ACTION_MOVE:
                 break;
            case MotionEvent.ACTION_UP:
                break;

            case MotionEvent.ACTION_HOVER_EXIT:
                    break;
        }
    return true;
    }

}

我有拖动监听器

  class MyDragListener implements OnDragListener {
    @Override
      public boolean onDrag(View v, DragEvent event) {
        switch (event.getAction()) {
        case DragEvent.ACTION_DRAG_STARTED:
          break;
        case DragEvent.ACTION_DRAG_ENTERED:
          break;
        case DragEvent.ACTION_DRAG_EXITED:        
          break;
        case DragEvent.ACTION_DROP:
        View view = (View) event.getLocalState();
         paramsBlock = new RelativeLayout.LayoutParams(view.getWidth(), view.getWidth());  
          paramsBlock.leftMargin = (int) event.getX() - (view.getWidth()/2);//- ((imageView.getWidth()/9)/2);
          paramsBlock.topMargin = (int) event.getY() -(view.getHeight()/2);//-((imageView.getWidth()/9)/2);

          view.setLayoutParams(paramsBlock);             
          break;
        case DragEvent.ACTION_DRAG_ENDED:
          default:
          break;
        }
        return true;
      }
  }

是否可以使用onLongClick监听器?

最佳答案

您可以使用 onLongClickListener 开始拖动。这应该允许您编辑该字段,因为控件的默认点击或触摸监听器不会被覆盖

为你的拖动启动尝试这样的事情

OnLongClickListener longClickListener = new OnLongClickListener() {

    @Override
    public boolean onLongClick(View view) {
        ClipData data = ClipData.newPlainText("", "");
        DragShadowBuilder shadowBuilder = new DragShadowBuilder(view);
        view.startDrag(data, shadowBuilder, view, 0);
        view.setVisibility(View.VISIBLE);

        return true;
    }
};

希望对你有帮助

关于android - 拖动后如何使 EditText 可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19920590/

相关文章:

java - 安卓文件未下载

android - 缩放固定的 SurfaceView 以垂直填充并保持纵横比

android - 如何删除 MediaPlayer?

android - 如何在 Android 中监控网络连接状态?

列表中的android ImageView 不会缩放到宽度

android - Pebble 应用安装失败

java - Android APK 无效?未在路径 : DexPathList 上找到类 "AndroidLauncher"

android - 如何避免谷歌地图的中心虚线

java - 如何在执行查询时更新 json 文件

android - 我在按文本过滤时遇到问题