2013-08-22 14 views
5

W interfejsie API 11+ w przypadku długiego naciśnięcia tekstu w widoku WebView wyświetlany jest pasek działań kontekstowych (CAB). Nie chcę przesłonić istniejących pozycji menu, więc implementacja mojego ActionMode.Callback nie jest poprawną odpowiedzią. Chcę tylko wiedzieć, kiedy domyślny CAB jest pokazany, więc wiem, że wybór tekstu rozpoczął się w ten sposób, mogę zablokować przewijanie w WebView. jakieś pomysły?(Android) Czy istnieje sposób wykrywania, kiedy tekst został wybrany w widoku przeglądarki?

+0

ja chcąc ukryć pasek nagłówka, gdy kabina jest pokazane. –

Odpowiedz

0

Jeśli chcesz wiedzieć, kiedy domyślny CAB jest na ekranie, można sprawdzić, to jest istnienie po 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; 
     } 
    }); 
..... 
Powiązane problemy