在ChildBrowser,Phonegap / Android中显示标题/标题

时间:2012-05-22 10:33:30

标签: android cordova childbrowser

我正在使用ChildBrowser,可以在我的PhoneGap应用程序中显示外部网页。我的问题是我无法在子网页中添加标题/标题。有什么建议吗?

到目前为止我尝试了什么

而不是toolbar.addView(edittext);我添加了

final TextView rowTextView = new TextView(ctx.getContext()); 
rowTextView.setText(myTitle); 
toolbar.addView(rowTextView); 

但看起来我还需要将myTitle变量传递给execute方法 所以在PluginResult内部执行()我可以使用像

这样的东西
result = this.showWebPage(args.getString(0), args.optJSONObject(1), myTitle);

我可以为iOS添加相同的代码示例吗?

1 个答案:

答案 0 :(得分:2)

你必须“升级”ChildBrowser:在第340行附近就有这个代码:webview.setWebViewClient(client);。将其替换为以下内容:

webview.setWebViewClient(new WebViewClient() {
  @Override
    public void onPageFinished(WebView view, String url) {
      webview.loadUrl("javascript:(function(){"+"var t=document.head.getElementsByTagName('title')[0];t.innerHTML="+myNewTitle+"})()");
    }
});  

您还必须调整阅读showWebPage()代码的选项以设置myNewTitle。但在那之后,你应该好好去。

修改

基本上我决定 - 至少对我来说,也许你的用途 - 不需要工具栏。最初,我调整了ChildBrowser,以便通过将完整的HTML源代码发送回JS代码,可以轻松地完成Google oAuth2。我绝对不需要工具栏,因为用户正在去Google想要的地方,期间。我不得不破解代码中的东西,原作者可能对我用他的代码所做的事感到生气......这是一个清单:

import android.view.Gravity;
import android.util.TypedValue;
import android.graphics.Color;
import android.graphics.Typeface;

public class ChildBrowser extends Plugin {
  **public String zeTitle;**

//  private EditText edittext;
private TextView edittext;

EditText的所有引用都必须更改为TextView

result = this.showWebPage(args.getString(0), args.optJSONObject(1)**, args.getString(2)**);

您还需要更改.js文件中的内容。

public String showWebPage(final String url, JSONObject options**, String myNewTitle**) {
  if (options != null) {
    showLocationBar = options.optBoolean("showLocationBar", true);
  }
  **zeTitle=myNewTitle;**

注释掉所有ImageButton相关代码。

edittext = new TextView(ctx.getContext()); // insread of EditText

评论edittext.setOnKeyListener

// edittext.setText(url);
edittext.setText(zeTitle);
edittext.setTextSize(TypedValue.COMPLEX_UNIT_PX, 24);
edittext.setGravity(Gravity.CENTER);
edittext.setTextColor(Color.DKGRAY);
edittext.setTypeface(Typeface.DEFAULT_BOLD);

仅在工具栏中添加所需内容:

// toolbar.addView(back);
// toolbar.addView(forward);
toolbar.addView(edittext);
// toolbar.addView(close);

最后:

public class ChildBrowserClient extends WebViewClient {
// EditText edittext;
  TextView edittext;

/**
 * Constructor.
 * 
 * @param mContext
 * @param edittext 
 */
public ChildBrowserClient(TextView mEditText) {
//  this.edittext = mEditText;
}

在JS代码中:

cb.showWebPage(YOUR_URL, {showLocationBar:true}, YOUR_TITLE);

你应该好好去。我将介绍我在GitHub上使用的ChildBrowser的更新版本。