Android TV中WebView的按键响应问题

/

软硬件环境

  • Macbook Pro MGX 72
  • Android studio 1.0.2
  • BesTV小红

问题场景

当布局中是一个WebView时,打开页面后,焦点就移到了WebView上,默认情况下,此时遥控器只响应返回键,如果需要响应其它键值(比如菜单键),这时该怎么做呢?本文就来解答这个问题。

应对方法

一般的键值处理是放在onKeyDown(int keyCode,KeyEvent keyevent)里处理的,不过在上述场景中,onKeyDown方法中接收不到菜单键,如果想让其也能够接收到,也不难,往下看。

  1. webView = (WebView)findViewById(R.id.webView);
  1. WebSettings webSettings = webView.getSettings();
  2. webSettings.setJavaScriptEnabled(true);
  3. webSettings.setUseWideViewPort(true);
  4. webSettings.setLoadWithOverviewMode(true);
  5. webView.setWebViewClient(new WebViewClient(){
  6. @Override
  7. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  8. view.loadUrl(url);
  9. //return super.shouldOverrideUrlLoading(view, url);
  10. return true;
  11. }
  12. @Override
  13. public boolean shouldOverrideKeyEvent(WebView webView,KeyEvent keyEvent) {
  14. //让onKeyDown来处理KeyEvent.KEYCODE_STAR,此处对应小红遥控器菜单键
  15. if (keyEvent.getKeyCode() == KeyEvent.KEYCODE_STAR) {
  16. return true;
  17. } else {
  18. return false;
  19. }
  20. }
  21. }

转载请注明作者和出处,并添加本页链接。
原文链接:http://xugaoxiang.com/post/71

给我留言