我正在编写一个使用webview来显示HTML文件的应用程序。当用户点击搜索此代码运行:Android - 将findOnPage实现为WebView
public void search() {
container = (LinearLayout)findViewById(R.id.layoutId);
nextButton = new Button(this);
nextButton.setText("Next");
nextButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
mWebView.findNext(true);
}
});
container.addView(nextButton);
closeButton = new Button(this);
closeButton.setText("Close");
closeButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
container.removeAllViews();
}
});
container.addView(closeButton);
findBox = new EditText(this);
findBox.setMinEms(30);
findBox.setSingleLine(true);
findBox.setHint("Search");
findBox.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event){
if((event.getAction() == KeyEvent.ACTION_DOWN) && ((keyCode == KeyEvent.KEYCODE_ENTER))){
mWebView.findAll(findBox.getText().toString());
try{
Method m = WebView.class.getMethod("setFindIsUp", Boolean.TYPE);
m.invoke(mWebView, true);
}catch(Exception ignored){}
}
return false;
}
});
}
我使用的代码通常运行良好,在Android 4.0中有一些错误。我想要一个Android Browser中提供的解决方案,顶部栏成为搜索区域。
当我试图执行此操作时,我失败了。有没有一种方法可以正确地将其实施到Android应用程序的webview中?我想要比我目前使用的更优雅和功能性的设计。
谢谢所有回复
编辑
对于未来的用户,这个bug只在下列Android版本存在:
Platform Version API Level VERSION_CODE
Android 4.0.3, 4.0.4 15 ICE_CREAM_SANDWICH_MR1
我试图搜索Android源代码,看看如何我无法找到接下来会发生什么,我可以找到findOnPage()的唯一其他引用是在UI.java和browser.xml中,它们都不会导致我知道如何实现这一点 – user1363871