gpt4 book ai didi

java - 启用 youtube 视频从全屏返回后,Android 软键盘将不显示

转载 作者:行者123 更新时间:2023-11-29 22:54:11 24 4
gpt4 key购买 nike

我的应用程序大量使用 YouTube 视频来回答有关产品和这些产品安装的问题。就上下文而言,我是一名全栈网络开发人员,并且只有一个月的 java/android studio 开发经验。该应用程序仅用 javascript 和 css 编写,我使用 android webview 将其显示为应用程序。目前,我有一个 web chrome 客户端,可以隐藏完整的 youtube 视频,也可以显示全屏 youtube 视频。一旦一个视频全屏然后返回正常 View ,如果我点击输入字段,键盘不会显示,我会在调试器中收到消息。

“I/AssistStructure: Flattened final assist data: 1928 bytes, containing 1 windows, 5 views”

认为它来自隐藏自定义 View 的 web chrome 客户端。

认为答案是检查 View 是否是键盘,而不是执行onHideCustomView();但我不确定是这种情况还是我只是在做一些愚蠢的事情。

下面是大部分应用程序的代码或足够的上下文。

谢谢你们花时间帮助我。

如果我可以改进此过程,也将不胜感激。

谢谢你:)

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
myWebView = new WebView(this);
setContentView(myWebView);
myWebView.setWebChromeClient(new MyChrome());
myWebView.setWebViewClient(new WebViewClient());
myWebView.loadUrl("url");

WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.requestFocus(View.FOCUS_DOWN);


}

@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public boolean onKeyDown (int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
String webUrl = myWebView.getUrl();
if (webUrl.indexOf("directory/url") < 0){

myWebView.loadUrl("url");


return true;
}else {
myWebView.loadUrl("javascript:android();");
return true;
}

}
return super.onKeyDown(keyCode, event);

}


private class MyChrome extends WebChromeClient {

private View mCustomView;
private WebChromeClient.CustomViewCallback mCustomViewCallback;
protected FrameLayout mFullscreenContainer;
private int mOriginalOrientation;
private int mOriginalSystemUiVisibility;

MyChrome() {}



public void onHideCustomView()
{
((FrameLayout)getWindow().getDecorView()).removeView(this.mCustomView);
this.mCustomView = null;
getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
setRequestedOrientation(this.mOriginalOrientation);
this.mCustomViewCallback.onCustomViewHidden();
this.mCustomViewCallback = null;
}

public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback)
{
if (this.mCustomView != null)
{
onHideCustomView();
return;
}
this.mCustomView = paramView;
this.mOriginalSystemUiVisibility = getWindow().getDecorView().getSystemUiVisibility();
this.mOriginalOrientation = getRequestedOrientation();
this.mCustomViewCallback = paramCustomViewCallback;
((FrameLayout)getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
getWindow().getDecorView().setSystemUiVisibility(3846);
}
}

最佳答案

只需清除 web View 上的焦点

public void onHideCustomView()
{
((FrameLayout)getWindow().getDecorView()).removeView(this.mCustomView);
this.mCustomView = null;
getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
setRequestedOrientation(this.mOriginalOrientation);
this.mCustomViewCallback.onCustomViewHidden();
this.mCustomViewCallback = null;
myWebView.clearFocus();
}

关于java - 启用 youtube 视频从全屏返回后,Android 软键盘将不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57597866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com