【发布时间】:2013-08-16 15:17:50
【问题描述】:
我正在编写一个使用 webview 来显示 HTML 文件的应用程序。当用户点击搜索时,运行此代码:
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 浏览器中提供的解决方案,其中顶部栏成为搜索区域。
当我尝试实现这一点时,我失败了。有没有办法将它正确地实现到 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。这些都没有导致我在其他任何地方了解如何实现这一点。
标签: java android browser android-webview