Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:使用LinkMovementMethod编辑文本_Android_Android Widget - Fatal编程技术网

Android:使用LinkMovementMethod编辑文本

Android:使用LinkMovementMethod编辑文本,android,android-widget,Android,Android Widget,我基本上想了解LinkMovementMethod类。我有一个编辑文本内的图像,需要点击。所以我使用LinkMovementMethod.getInstance来编辑文本。但由于此LinkMovementMethod对象,用于编辑文本(如复制、剪切、粘贴)的关联菜单(长按)选项不可见。此外,我无法在编辑文本中定位光标。不知怎的,光标隐藏了 在编辑文本中使用LinkMovementMethod是正确的方法,还是有必要为光标和上下文菜单问题编写自定义LinkMovementMethod类

我基本上想了解LinkMovementMethod类。我有一个编辑文本内的图像,需要点击。所以我使用LinkMovementMethod.getInstance来编辑文本。但由于此LinkMovementMethod对象,用于编辑文本(如复制、剪切、粘贴)的关联菜单(长按)选项不可见。此外,我无法在编辑文本中定位光标。不知怎的,光标隐藏了

在编辑文本中使用LinkMovementMethod是正确的方法,还是有必要为光标和上下文菜单问题编写自定义LinkMovementMethod类

     EditText editText = (EditText)findViewById(R.id.text);
     editText.setMovementMethod(LinkMovementMethod.getInstance());
-问候,,
Ron..

您不应该对可编辑文本使用LinkMovementMethod。LinkMovementMethod是一种移动方法,允许您在链接之间移动。。。这不是您想要的文本编辑器,因为您应该使用移动方法来移动光标进行编辑


您希望如何处理可编辑文本中的链接?当您有可编辑文本时,点击文本会将光标置于该点进行编辑。它无法打开链接。这是两件相互矛盾的事情。如果你想有一些其他的行为,你需要自定义文本视图来做一些特殊的事情,并弄清楚如何在编辑链接文本和打开链接文本之间消除歧义(例如,Google Docs向你显示一个弹出窗口,如果你不想编辑链接文本,可以选择打开链接文本)。但是您需要自己编写代码,在当前的框架中没有神奇的内置功能来实现这一点。

一种方法是
扩展EditText

import android.content.Context;
import android.text.Layout;
import android.text.style.ImageSpan;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.EditText;

public class Edit extends EditText {

    public Edit(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public Edit(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public Edit(Context context) {
        super(context);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        boolean b = super.onTouchEvent(event);

        int x = (int) event.getX();
        int y = (int) event.getY();

        x -= getTotalPaddingLeft();
        y -= getTotalPaddingTop();

        x += getScrollX();
        y += getScrollY();

        Layout layout = getLayout();
        int line = layout.getLineForVertical(y);
        int off = layout.getOffsetForHorizontal(line, x);

        setSelection(off);

        /**
         * get you interest span
         */
        ImageSpan[] link = getText().getSpans(off, off, ImageSpan.class);
        System.out.println("---link---" + link.length);
        if (link.length != 0) {
            String src = link[0].getSource();
            System.out.println("---src---" + src);
            return true;
        }
        return b;
    }
}

你好你解决了这个问题吗?我对答案很感兴趣。谢谢@卢巴特:不,我仍然面临同样的问题。从安卓编辑文本的源代码来看,安卓在编辑文本中复制时似乎只复制文本而不复制图像。此外,在LinkMovementMethod期间光标不可见仍然是个谜。有更新吗?当使用StimeMeMaskMeod().@ BoielWaWe时,我不能使光标可见。您对文本中间的字符如何被删除或编辑有什么想法?