03. XMLファイルへの移行
2022/10/13:見た目を修正しましたが、内容が古すぎてアレですね…。
レイアウトが複雑になってくるので、レイアウトファイルの定義(XML作成)をするようにしていきます。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.linearlayout);
WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl("http://www.yahoo.co.jp");
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setBuiltInZoomControls(true);
}
}
文字色が反転しているところ、これまではwebviewを直指定していたのをやめて、linearlayout.xmlというファイルを指定するようにします。このファイルは、Eclipseのディレクトリで、res/layout 以下に生成します。そして、次の行のWebView生成のところ。ここも書き方が変わります。
以下は「res/layout/linearlayout.xml」で、Eclipseの「新規」→「Android XMLファイル」でダイアログを表示させて、
リソースタイプ:レイアウト
ファイル:linearlayout.xml
として、下の選択肢からLinearLayoutを選んで生成しましょう。ここでは、2段構成でレイアウトを定義しています。
LinearLayout(縦向き)
WebView
LinearLayout(横向き) …①
EditText
Button
</LinearLayout>
</LinearLayout>
LinearLayoutは、指定した向き(orientation)にしたがって、オブジェクトをポンポン置いていくレイアウトになります。vertical指定なら縦方向に、horizontal指定なら横方向に。ここでは、縦画面を想定し、
縦にWebView画面
その下に検索文字列を入れるところと、OKボタンを置くところ …①
を構成します。まずは縦に並べたいので、上位のLinearLayoutはvertical指定です。①は、横に並べたいので、またLinearLayoutでくるんでいます。どの定義も、「layout_width」と「layout_height」は設定を忘れないように。意味不明なエラーに巻き込まれてしまいます。コードで生成しているWebViewは、このレイアウトファイルのWebViewなので、WebView定義にある「id」名 = webviewをコード側で指定しています。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/addressbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:lines="1"
android:hint="検索キーワード" />
<Button
android:id="@+id/ok_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="実行" />
</LinearLayout>
</LinearLayout>
ここで実行すると、画面の下に「検索キーワード」と「実行」ボタンが表示された状態で、上にウェブページが表示されるはずです。理解しておいてほしいのは、レイアウトのXMLファイルについて
共通
layout_width / layout_heightの指定値は (必須)
fill_parent 親を埋めるサイズ
wrap_content コンテンツを覆うサイズ
match_parent 親の指定値に合わせる
layout_weight : 重み付け (必要に応じて)
@+id/xxxxx : idを付加します。付加したidは、Relative Layoutや、コード上でWebViewやButtonを指定するのに使います。
LinearLayout
orientation
リニアレイアウトは、orientationに指定した値の方向に、コンテンツを置いていきます。
vertical / horizontal
EditText
lines : 編集可能なテキストの行数を決めます。他のサイトをみると、細かく説明が見つかります。
hint : フィールドが空のときに、表示しておく文字列を指定します。なくてもいいです。
Button
text : ボタンに表示する文字列を指定します。@stringから呼び出してもいいですが、手抜きするなら直接書いてしまいましょう。