【问题标题】:Disable text selection bar for Android webview but keep text selection handles (Xamarin)禁用 Android webview 的文本选择栏,但保留文本选择句柄 (Xamarin)
【发布时间】:2013-12-13 11:10:48
【问题描述】:

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

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

【问题讨论】:

    标签: android xamarin.android


    【解决方案1】:

    由于 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;
                }
            };
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-20
      • 2016-07-16
      • 2019-09-25
      • 2019-09-25
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多