How to override Contextual Action Bar when selecting text in a WebView in Android? -


i've googled lot, , find tutorials , answers here in stackoverflow, facing difficults resolve issue.

i have fragment webview, , want show custom contextual action bar when user selects text of web view. have 2 main issues here:

  • 1 currently, custom cab showed when user performs long click in part of web view.
  • 2 text not selected when user performs long click in text of web view.

some of current code:

custom interface:

public class selectactionmodecallback implements actionmode.callback {      @override     public boolean oncreateactionmode(actionmode mode, menu menu) {         return false;     }      @override     public boolean onprepareactionmode(actionmode mode, menu menu) {         return false;     }      @override     public boolean onactionitemclicked(actionmode mode, menuitem item) {         return false;     }      @override     public void ondestroyactionmode(actionmode mode) {     } } 

custom webview

public class customwebview extends webview {      private selectactionmodecallback actionmodecallback;      public customwebview(context context, attributeset attrs) {         super(context, attrs);     }      @override     public actionmode startactionmode(callback callback) {         actionmodecallback = new selectactionmodecallback();         return super.startactionmode(actionmodecallback);      } 

in fragment, have this:

@override public void onresume() {     super.onresume();      mywebview.setonlongclicklistener(new view.onlongclicklistener() {         public boolean onlongclick(view view) {             if (mactionmode != null) {                 toast.maketext(getactivity(), "test", toast.length_short).show();                 return false;             }              mactionmode = getactivity().startactionmode(mactionmodecallback);             view.setselected(true);             return true;         }     }); }  private selectactionmodecallback mactionmodecallback = new selectactionmodecallback() {      @override     public boolean oncreateactionmode(actionmode mode, menu menu) {         menuinflater inflater = mode.getmenuinflater();         inflater.inflate(r.menu.custom, menu);         return true;     }      @override     public boolean onprepareactionmode(actionmode mode, menu menu) {         return false;     }      @override     public boolean onactionitemclicked(actionmode mode, menuitem item) {         switch (item.getitemid()) {             case r.id.action_sustom:                 custommethod();                 mode.finish();                 return true;             default:                 return false;         }     }      @override     public void ondestroyactionmode(actionmode mode) {         mactionmode = null;     } }; 

there better way! see following answer: https://stackoverflow.com/a/22391169/2608235


in short, can't use onlongclicklistener , keep selection within webview. android weird stuff behind scenes selecting text within webviews. if override onlongclicklistener in order call startactionmode, lose selection, have found out.

what should instead override startactionmode in fragment, rather parent view (in case, customwebview).

i don't have mod permission mark question duplicate, is.
see question more info: use custom contextual action bar webview text selection


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -