2013-08-22 62 views
5

在API 11+中,當長按WebView中的文本時,會顯示上下文操作欄(CAB)。我不想覆蓋現有的菜單項,所以實現我自己的ActionMode.Callback不是正確的答案。我只想知道何時顯示默認的CAB,以便我知道文本選擇已經開始,這樣我就可以鎖定WebView上的滾動了。有什麼想法嗎?(Android)有沒有辦法檢測在webview中選擇文本的時間?

+0

我想隱藏我的標題欄中顯示的CAB時。 –

回答

0

如果你想知道什麼時候默認CAB是在屏幕上,你可以在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; 
     } 
    }); 
..... 
相關問題