android - 禁用 Android webview 的文本选择栏但保留文本选择句柄 (Xamarin)

标签 android xamarin.android

我正在使用 Xamarin for Android 但这同样适用于 Android JAVA SDK。 我有一个 webview,用户可以使用内置的 Android 操作系统句柄在网页上选择文本。我想禁用长按时出现的文本选择操作栏,但不禁用用于进行选择的文本选择 handle 。

我已经尝试覆盖 OnSelectionStart 方法,但这没有任何效果。

最佳答案

自 Android 6.0 引入 Text selection ,我面临同样的问题。感谢paolo.camitini ,我找到了。要解决您的问题,您必须覆盖方法 startActionMode(ActionMode.Callback callback)public ActionMode startActionMode(ActionMode.Callback callback, int type)(来自 SDK 23)。这是我的实现:

import android.content.Context;
import android.util.AttributeSet;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.webkit.WebView;

public class EpubWebView extends WebView {
    public EpubWebView(Context context) {
        super(context);
    }

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

    public EpubWebView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public EpubWebView(Context context, AttributeSet attrs, int defStyleAttr, boolean privateBrowsing) {
        super(context, attrs, defStyleAttr, privateBrowsing);
    }

    @Override
    public ActionMode startActionMode(ActionMode.Callback callback) {
        return new ActionMode() {
            @Override
            public void setTitle(CharSequence title) {
            }

            @Override
            public void setTitle(int resId) {
            }

            @Override
            public void setSubtitle(CharSequence subtitle) {
            }

            @Override
            public void setSubtitle(int resId) {
            }

            @Override
            public void setCustomView(View view) {
            }

            @Override
            public void invalidate() {
            }

            @Override
            public void finish() {
            }

            @Override
            public Menu getMenu() {
                return null;
            }

            @Override
            public CharSequence getTitle() {
                return null;
            }

            @Override
            public CharSequence getSubtitle() {
                return null;
            }

            @Override
            public View getCustomView() {
                return null;
            }

            @Override
            public MenuInflater getMenuInflater() {
                return null;
            }
        };
    }

    @Override
    public ActionMode startActionMode(ActionMode.Callback callback, int type) {
        return new ActionMode() {
            @Override
            public void setTitle(CharSequence title) {
            }

            @Override
            public void setTitle(int resId) {
            }

            @Override
            public void setSubtitle(CharSequence subtitle) {
            }

            @Override
            public void setSubtitle(int resId) {
            }

            @Override
            public void setCustomView(View view) {
            }

            @Override
            public void invalidate() {
            }

            @Override
            public void finish() {
            }

            @Override
            public Menu getMenu() {
                return null;
            }

            @Override
            public CharSequence getTitle() {
                return null;
            }

            @Override
            public CharSequence getSubtitle() {
                return null;
            }

            @Override
            public View getCustomView() {
                return null;
            }

            @Override
            public MenuInflater getMenuInflater() {
                return null;
            }
        };
    }
}

关于android - 禁用 Android webview 的文本选择栏但保留文本选择句柄 (Xamarin),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20248753/

相关文章:

listview - ContextAction MenuItem 图标在基于 Xamarin.Forms PCL 的解决方案中未显示在 iOS 平台中

android - 填充 ListView

java - AppUpdateManager.startUpdateFlowForResult 导致 IntentSender$SendIntentException

java - jsoup 1.8.2 + android,NoClassDefFoundError : Failed resolution of: Ljava/applet/Applet;

c# - StatusBar 和 MasterDetailPage Xamarin.Forms Android 之间出现白条

c# - Java.Interop.Tools.Diagnostics.XamarinAndroidException : error XA2006

android - GridLayout$LayoutParams 无法转换为 android.support.constraint.ConstraintLayout$LayoutParams

android - 使垂直滚动条可见

html - Monocross/HTML5 与 MonoDroid/MonoTouch/Windows

c# - Monodroid 隐藏和显示状态栏