Pergunta

estou usando Navegador infantil, que funciona bem para exibir páginas da web externas em meu aplicativo PhoneGap.Meu problema é que não consigo adicionar título/cabeçalho em páginas da web filhas.Alguma sugestão?

O que eu tentei até agora

Em vez de toolbar.addView(edittext); Eu adicionei

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

Mas parece que eu também preciso passar a variável mytitle para executar o método para que interno pluginResult execute () eu possa usar algo como

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

Posso adicionar o mesmo exemplo de código seu para iOS?

Foi útil?

Solução

Você terá que "atualizar" o ChildBrowser:em algum lugar perto da linha 340 há este código: webview.setWebViewClient(client);.Substitua-o pelo seguinte:

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+"})()");
    }
});  

Você terá que ajustar também as opções de leitura do código de showWebPage() pôr myNewTitle.Mas depois disso, você deve estar pronto para ir.

EDITAR:

Basicamente, decidi que - pelo menos para meu uso, e provavelmente para o seu - a barra de ferramentas tal como está não era necessária.Originalmente, ajustei o ChildBrowser para poder usar o Google oAuth2 sem problemas, enviando de volta o código-fonte HTML completo para o código JS.Definitivamente, não preciso de uma barra de ferramentas, pois o usuário vai para onde o Google deseja, ponto final.Tive que hackear algumas coisas do código, e o autor original poderia ficar chateado com o que fiz com o código dele...Aqui está uma lista de verificação:

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;

Todas as referências a EditText tem que ser alterado para TextView.

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

Você também precisará alterar algumas coisas no arquivo .js.

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

Comente todos os ImageButton código relacionado.

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

Comente o 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);

Adicione à barra de ferramentas apenas o que for necessário:

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

Finalmente:

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

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

No código JS:

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

Você deve estar pronto para ir.Colocarei uma versão atualizada do ChildBrowser que uso no GitHub.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top