2012-05-22 3 views
0

Я использую ChildBrowser, который отлично работает, чтобы отображать внешние веб-страницы в приложении PhoneGap. Моя проблема в том, что я не могу добавить заголовок/заголовок на дочерних веб-страницах. Какие-либо предложения?Показать заголовок/заголовок в ChildBrowser, Phonegap/Android

Что я пытался до сих пор

Вместо toolbar.addView(edittext); я добавил

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

Но, похоже, я также должен передать переменную myTitle выполнить метод так, что внутри PluginResult выполнения() можно использовать что-то вроде

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

Могу ли я добавить тот же образец вашего кода для iOS?

+0

В коде js вам нужно сделать что-то вроде 'cb.showWebPage (url, {showLocationBar: true}, myTitle);' так что в коде Java вы делаете: result = this.showWebPage (args.getString (0), args.optJSONObject (1), args.getString (2)); 'Что касается iOS, я бы не знал, как это сделать, поскольку я не делаю Objective-C ... – dda

+0

Моя измененная версия ChildBrowser находится на GitHub с образцом проекта. https://github.com/dda/slavebrowser/ – dda

ответ

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. Но после этого вам должно быть хорошо идти.

EDIT:

В принципе, я решил, что - для моего использования, по крайней мере, и, возможно, ваш - панель инструментов, как это стоит не было необходимости. Первоначально я настраивал ChildBrowser так, чтобы я мог без проблем использовать Google oAuth2, отправив обратно полный HTML-код обратно в JS-код. Мне определенно не нужна панель инструментов, так как пользователь идет туда, куда хочет 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); 

Вы должны быть добры идти. Я поставлю обновленную версию ChildBrowser, которую я использую в GitHub.

+0

well thnx за вашу помощь. Было полезно. одна проблема, с которой я столкнулся с вышеупомянутым решением - внутри функции выполнения есть вызов showWebPage result = this.showWebPage (..); так выглядит, что мне нужно также настроить параметры функции execute. можете ли вы дать подсказки о том, как это сделать? – san

+0

Также я не могу видеть заголовок/заголовок после применения вышеуказанного решения. Я что-то не хватает? Многие thnx. – san

+0

выглядит так, что я не могу продвинуться, пока у меня нет репутации 15. :( – san

Смежные вопросы