2013-08-22 10 views
5

In API 11+ quando si preme a lungo sul testo in una WebView viene visualizzata la barra di azione contestuale (CAB). Non voglio sovrascrivere le voci di menu esistenti, quindi l'implementazione del mio ActionMode.Callback non è la risposta corretta. Voglio solo sapere quando viene mostrato il CAB predefinito così so che la selezione del testo è iniziata in quel modo, posso bloccare lo scorrimento sul WebView. qualche idea?(Android) Esiste un modo per rilevare quando il testo è stato selezionato in una visualizzazione Web?

+0

Sono voler nascondere la mia barra di intestazione quando viene mostrato il CAB. –

risposta

0

Se vuoi sapere quando il CAB di default è sullo schermo, è possibile verificare la sua esistenza dopo un ACTION_UP:

public class MainActivity extends ActionBarActivity { 
WebView mWebView; 
boolean mSelected; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mWebView = (WebView) findViewById(R.id.wvExample); 
    mWebView.loadUrl("file:///android_asset/webpage.html"); 

    mWebView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if (event.getAction() == MotionEvent.ACTION_UP) { 

       View root = getWindow().getDecorView(); 
       View cabButton = root.findViewById(R.id.action_mode_close_button); 

       if (cabButton != null && !mSelected) { 
        Toast.makeText(getApplicationContext(), "Text is now selected", Toast.LENGTH_SHORT).show(); 
        mSelected = true; 
       } else { 
        mSelected = false; 
        Toast.makeText(getApplicationContext(), "No Text Selected", Toast.LENGTH_SHORT).show(); 
       } 

      } 

      return false; 
     } 
    }); 
..... 
Problemi correlati