なのでWebViewにしたときに上部に戻るボタンが配置されるようにして
ボタンを押したらアプリに戻るようにしてみた。
WebView+ボタンの表示とアプリに戻る機能の実装は以下の流れ。
1. LinearLayoutクラスにWebViewとButtonを追加
2. ButtonにはOnClickListenerを追加する
3. OnClickListener()内でアプリのViewに戻すようにする
3. setContentViewにはWebViewではなくLinearLayoutを渡す
LinearLayoutを使用したボタンの配置は「表示するURLの指定」が参考になりました。
自分のプログラムの実装ではアプリのViewクラスとWeb用のViewのクラスを分けたかったので
class WebPage extends LinearLayout implements OnClickListener {というクラスを作成。
}
この中でWebViewを扱ったり、Layoutしたり、ボタンのクリックイベントを取得したりしました。
メインクラスのonCreate()
// Web用のViewの初期化
webPage = new WebPage(this);
// 重要:レイアウトの前に一旦ContentViewに登録
setContentView(webPage);
webPage.createLayout();
WebPageクラス
// layout用定数はまったのがLinearLayoutクラスにaddViewする前に
private final int FP = ViewGroup.LayoutParams.FILL_PARENT;
private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
// コンストラクタ
public WebPage(Activity main) {
super(main);
// アプリのViewを保存しておく
mainView = main;
// WebViewの作成
webView = new WebView(main);
webView.setWebViewClient(new WebViewClient());
// ボタンの作成
btnRetApp = new Button(main);
btnRetApp.setText("Return");
btnRetApp.setOnClickListener(this);
}
// レイアウト作成関数
public void createLayout() {
this.setOrientation(LinearLayout.VERTICAL);
LinearLayout upper = new LinearLayout(mainView);
upeer.setOrientation(LinearLayout.HORIZONTAL);
// レイアウトに追加
upeer.addView(btnRetApp, new LinearLayout.LayoutParams(WC, WC));
this.addView(upeer, new LinearLayout.LayoutParams(FP, WC));
this.addView(webView, new LinearLayout.LayoutParams(WC, FP));
}
public void onClick(View v) {
if (v == btnRetApp) {
// アプリのViewに戻る
mainView.moveMainView();
}
}
setContentViewでLinearLayoutクラスのViewをセットしておかないといけないということでした。
これをしておかないと落ちました。