Android開発

特に考慮せず、Activityのレイアウトを作成するとAndroidは自動認識で一番初めのEditTextにカーソルをあてる動作をします。この機能は非常に便利ではありますが、時と場合によっては避けたいケースがあります。そんな時の対処法の紹介です。

左図のように画面起動時にAndroidの初期動作として画面一番初めのEditTextにカーソルがあたってしまう。どうにかしてカーソルがあたらない状態で画面を起動したい。

EditTextにカーソルやフォーカスを適用させない方法は非常に簡単でxmlファイルの記述だけで済みます。以下のようにandroid:cursorVisibleとandroid:focusableInTouchModeを「false」にすることで
Androidの自動認識でEditTextにカーソルやフォーカスがあたることを防ぐことができます。

しかし、ここで大きな問題点があります。

xmlファイルで上記設定をしてしまうと該当EditTextには二度とカーソルやフォーカスが適用できなくなってしまいます。カーソルやフォーカスが適用されないことを仕様とする場合は上記設定だけでいいわけですが、そうでない場合は困ります。

自動認識のカーソルやフォーカス適用だけ防ぎ、任意で適用させる為にはActivity側のjavaコードで対応することができます。簡単に言うと、EditTextのタッチイベントでフォーカスを有効にしてあげればいいわけですね。

こんな感じで記述します。

edt1 = (EditText)findViewById(R.id.edt1);

edt1.setOnClickListener(new OnClickListener() {
      @OverRide
      public void onClick(View v) {
           v.setFocusable(true);
           v.setFocusableInTouchMode(true);
           v.requestFocus();
    
           InputMethodManager  im = 
                  (InputMethodManager)setSystemService(Context.INPUT_METHOD_SERVICE);
           if (null != im) {
                   im.showSoftInput(v,0);
           }
     }
});

InputMethodManagerの記述は入力用キーボードを表示させる為に必要なコードです。

以上で画面起動時のカーソルやフォーカスの適用を防ぐ方法、および必要な時にカーソル、フォーカスを適用させる方法の解説となります。

EditTextに自動でカーソルをあてたくない場合の対処法

特に考慮せず、Activityのレイアウトを作成するとAndroidは自動認識で一番初めのEditTextにカーソルをあてる動作をします。この機能は非常に便利ではありますが、時と場合によっては避けたいケースがあります。そんな時の対処法の紹介です。

左図のように画面起動時にAndroidの初期動作として画面一番初めのEditTextにカーソルがあたってしまう。どうにかしてカーソルがあたらない状態で画面を起動したい。

EditTextにカーソルやフォーカスを適用させない方法は非常に簡単でxmlファイルの記述だけで済みます。以下のようにandroid:cursorVisibleとandroid:focusableInTouchModeを「false」にすることで
Androidの自動認識でEditTextにカーソルやフォーカスがあたることを防ぐことができます。

しかし、ここで大きな問題点があります。

xmlファイルで上記設定をしてしまうと該当EditTextには二度とカーソルやフォーカスが適用できなくなってしまいます。カーソルやフォーカスが適用されないことを仕様とする場合は上記設定だけでいいわけですが、そうでない場合は困ります。

自動認識のカーソルやフォーカス適用だけ防ぎ、任意で適用させる為にはActivity側のjavaコードで対応することができます。簡単に言うと、EditTextのタッチイベントでフォーカスを有効にしてあげればいいわけですね。

こんな感じで記述します。

edt1 = (EditText)findViewById(R.id.edt1);

edt1.setOnClickListener(new OnClickListener() {
      @OverRide
      public void onClick(View v) {
           v.setFocusable(true);
           v.setFocusableInTouchMode(true);
           v.requestFocus();
    
           InputMethodManager  im = 
                  (InputMethodManager)setSystemService(Context.INPUT_METHOD_SERVICE);
           if (null != im) {
                   im.showSoftInput(v,0);
           }
     }
});

InputMethodManagerの記述は入力用キーボードを表示させる為に必要なコードです。

以上で画面起動時のカーソルやフォーカスの適用を防ぐ方法、および必要な時にカーソル、フォーカスを適用させる方法の解説となります。

EditTextの入力制御

EditTextを数値のみ許可する

EditTextで数値のみに対応したいケースがよくありますよね。
そんな時の対応方法です。(キーボード入力も数値のみの対応)

基本的にアクティビティデザインのxmlファイル内の記述ですべて対応が可能です。

<EditText
android:id="@+id/startCnt"
android:layout_width="wrap_content""
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:digits="01234567890"
android:gravity="right"
android:inputType="number"
android:maxLength="5"
android:text="0" />

■EditTextに数値のみ入力を可能にしたい制御は以下の記述で対応が可能です。

android:digits=”01234567890″

■キーボード入力で数値のみ対応した場合は以下の記述が必要になります。

android:inputType=”number”

■EditTextへの入力桁数の制御も以下の記述で対応可能になります。

android:maxLength=”5″   ※この場合は5桁対応。

今回は数値のみの入力制御対応でしたが、inputTypeを利用することによりいろんなタイプの入力制御を行うことが可能です。以下に一覧をまとめておきますの参考にどうぞ。

inputType 内容説明
text テキスト入力
textCapCharacters 大文字入力
textCapWords 先頭文字を大文字にする場合
textCapSentences 文章の先頭を大文字にする場合
textAutoCorrect 文字入力を自動修正させる場合
textAutoComplete 文字の補完入力に対応させる場合
textMultiLine 複数行入力させる場合
textUri URLを入力させるさせる場合
textEmailAddress メールアドレスを入力させる場合
textEmailSubject メール件名を入力させる場合
textShortMessage ショートメッセージを入力させる場合
textLongMessage ロングメッセージを入力させる場合
textPersonName 人名を入力させる場合
textPostalAddress 住所を入力させる場合
textPassword パスワードを入力させる場合
textVisiblePassword パスワード入力を表示させて入力する場合
textWebEditText THMLを入力させる場合
textFilter 他のデータでフィルタされた文字を入力する場合
textPhonetic 発音記号を入力させる場合
numberSigned 符号付きの数値を入力させる場合
numberDecimal 少数入力をさせる場合
phone 電話番号を入力させる場合
datetime 日時を入力させる場合
date 日付を入力させる場合
time 時刻を入力させる場合

Google Mapsを利用したアプリ開発 (開発準備)

何かと便利でアプリサービスの拡張性も高いGoogle Map。
そんなGoogle Mapを利用したアプリ開発の手順を準備段階から紹介していきたいと思います。

Google Map開発までの流れ、および概要

SHA1のコードはAndroid開発環境にユニークで存在するキーコードでGoogle Maps APIを入手する際に必要になるコードです。このキーコードとGoogle Maps APIキーをひもづけることでGoogle Mapが利用できる仕組みになっています。

Webサイト Google APIsに接続しGoogle Maps APIを生成します。
生成したコードを開発環境にコピーして使用します。

以下の3つのコンポーネントをAndroid Studioにインストールしなければなりません。
・Google APIs(ARM System Image)
・Google Play services
・Google Repository

ターゲットとするAndroidバージョンをGoogle APIsに指定してアクティビティーの種類をGoogle Maps Activityでプロジェクトを作成します。

Google APIsに対応したAVDを作成します。

SHA1フィンガープリントの生成

フィンガープリントのコードは、debug.keystoreファイルに保存されていますが、WindowsのOSによって保存先が異なります。

■Windows XPの場合
C:\Documents and Settings\\.android\

■Windows 7の場合
C:\Users\\.android\

■Windows 10の場合
C:\Users\\.android\

また、フィンガープリントの取得はJDKが持つkeytool.exeを使用してコマンドプロンプトによって行います。下図のような感じで…

JDKのkeytool.exeが保存されているディレクトに移動できたら、実際にフィンガープリントを生成してみましょう。
フィンガープリントを生成するには以下のようにコマンド入力を行います。
※ユーザー名のところは使用されている環境のユーザー名を入力してください。

■フィンガープリント取得コマンド
keytool -v -list -alias androiddebugkey -keystore C:¥Users¥ユーザー名¥.android¥debug.keystore -storepass android -keypass android

証明書のフィンガプリントに記載されている「SHA1」のコードがキーコードとなりGoogle Maps APIキーを取得する際に使用することになります。
この一連のコマンド操作を覚えておいて損はありませんが、実はAndroid Stuidoを使用している場合、プロジェクト作成時にアクティビティをGoogle Maps Activityを選択して作成すると自動で生成されるgoogle_maps_api.xmlファイルにSHA1のキーコードが勝手に取得され記述してくれるので先にプロジェクトを作成してからAPIキーを取得する方が早かったりもします。

Google Maps APIの入手

次にフィンガープリントを生成して得たコードをもとにGoogle Maps APIキーを取得していきます。
下記、Googleコンソールサイトに接続してAPIを入手します。
サイト接続にはGoogleアカウントでのログインが必要ですのであらかじめ登録をしておいてください。(Gmailアカウントで大丈夫です)

以下ログイン後の作業手順です。

1.APIプロジェクトを作成する
下図の「+プロジェクト作成」をクリック、任意のプロジェクト名を入力して作成ボタンにてプロジェクトを作成します。このプロジェクトにこれから取得するAPIキーを管理していきます。

2.Google Maps API作成

下図APIとサービスから「Google Maps Android API」を選択してクリックします。

下図遷移画面で「Google Maps Android API」を有効にします。
有効にすることで先ほど作成したプロジェクトにAPIの基本情報が作成されます。

有効にしただけではこのAPIは使用することはできません。
下図画面に遷移するのでここで「認証情報を作成」をクリックして先に進んでください。

次遷移画面で「必要な認証情報」をクリックして進みます。

次遷移画面でランダムなAPIキーが生成されるので「完了」ボタンにて作成を完了します。

認証情報にGoogle MapsのAPIキーが作成されるのでこのAPIキーに対してフィンガープリントで生成取得したSHA1のコードを紐づけていきます。

下図遷移画面で作成されたAPI情報をクリックします。

API取得の最終作業です。
次遷移画面でSHA1コードと紐づけを行います。

アプリケーションの制限で「Androidアプリ」を選択
パッケージ名にアンドロイド開発環境のパッケージ名を入力
SHA-1証明書のフィンガープリントに開発環境で取得したフィンガープリント上のコードを入力

最後に「完了」ボタンで終了です。

SDKツールのインストール

WEB上においてAPIキーの取得およびSHA1コードとの紐づけが終了したわけですが、次に開発環境でGoogle Mapアプリを開発するにあたり必要なツールをインストールしていきます。

インストールが必要なツールは以下の3つです。
・Google APIs(ARM System Image)
・Google Play services
・Google repository

インストールする方法は、Android Studioの[ツール]-[Android]-[SDKマネージャー]から行います。

Google APIsは、SDKプラットフォームタブからインストール。
Google Play servicesとGoogle repositoryはSDKツールタブからインストール。

対象のツールにチェックをつけて適用ボタンを押せばインストールが開始されます。

Google Maps専用プロジェクトの作成

Google Mapアプリ専用のプロジェクトを新規に作成します。

プロジェクト作成にあたり注意する点としては、Minimum required SDKでプロジェクトが対象とする最小のバージョンをAPI9以上で選択する必要があります。
API8以外の場合、警告メッセージが表示されてしまいます。
また、プロジェクト名は、Google Maps APIを作成した時に指定したプロジェクト名称と同一にする必要があります。もし、異なる名称をプロジェクト名としてしまった場合、作成するGoogle Mapアプリは正常に動作しませんので注意してください。

これらの注意事項を踏まえて、

・プロジェクト名にはAPIキー作成時に登録したプロジェクト名と同一のもの指定する
・Phone and Tabletにチェックする。
・最小ターゲットにはAPI9以上を選択する。
・アクティビティはGoogle Maps Activityを選択する。

以上、設定内容で新規プロジェクトを登録します。

新規プロジェクトを登録すると下図のようなgoogle_maps_api.xmlファイルが自動的に開きます。
次にこのファイルに対して修正を行います。

このファイルのYOUR_KEY_HEREの箇所を取得したAPIキーに書き換えます。(上図の赤枠の箇所

Google Maps専用AVD作成

最後に動作検証を行うためのAVDを作成します。

AVD作成は、Android Studioの[ツール]-[Android]-[AVDマネージャー]で行います。

注意点としては、ターゲットを先ほどインストールしたGoogle APIsのバージョンに合わせてください。Google APIsのバージョンに合わせないとGoogle Mapが正常に動作しません。

下図の例の場合、Google APIsをAPIターゲット26で行っています。
downloadとなっているターゲットは、各APIレベルのGoogle APIsがインストールされていない状況を表しています。

以上を踏まえてAVDの作成を行ってください。

以上でGoogle Mapアプリ開発の基本的な環境作りは終了となります。

実際に作成したAVDに対して動作テストを実行してみてください。
正常にGoogle Mapが表示されれば環境づくりは成功です!!

それでは、楽しいGoogle Mapアプリ開発をお楽しみください。

【Android開発基礎】 端末回転時の画像内容を保存する

Android端末では画面を回転させると画面リサイズとともに表示されていた内容が初期化されてしまう望ましくない内部事情があります。
初期化されてしまえば、それまで入力していた大事なデータが消えてしまうわけなので、アプリを利用するユーザーにとっては非常に好ましくない事情となり、クレームにもつながります。
画面回転自体をNGにしてしまえば特に気にすることはありませんが、そうでない場合には、不測の事態にそなえてかならず以下の対応策を施すようにしておくことが通例です。

【画面回転時における初期化を防ぐ方法】

以下の2つのメソッドを記述していくことで回避することができます。
※メソッド内の保存情報、復元情報は製作アプリの情報と置き換えてください。

onSaveInstanceState

onRestoreInstanceState



具体的な記述内容としては以下を参考にしてください。

onSaveInstanceState

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    TextView txtBackUp = (TextView)findViewById(R.id.txtTmp);
    outState.putString("txtBackUp",txtBackUp.getText().toString());
}

onRestoreInstanceState

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState){
    super.onRestoreInstanceState(savedInstanceState);
    TextView txtRestore = (TextView)findViewById(R.id.txtTmp);
    txtRestore.setText(savedInstanceState.getString("txtBackUp"));
}

【Android開発基礎】ボタンクリック イベントリスナー

Android開発でよく使用する機能のとして、イベントリスナーというものがあります。
例えば、ボタンをクリックした時にある処理を実行するなど、なんらかのイベントが発生した時にだけ呼び出されるメソッドが用意されたイベント専用のクラスがイベントリスナーです。
このイベントリスナーについて簡単な例をもとに見ていきましょう。

以下のようなちょっとしたデザインを作ってみます。
処理内容をボタンクリック時にウィジェットTextViewに何かしらの文字を入力するといったものにします。
ボタンID:btnTmp
TextViewID:txtTmp

Javaコードで以下のようにコードを記述。

1.ボタンのインスタンスを作成
Button btn = (Button)findViewById(R.id.btnTmp);

2.ボタンにイベントリスナーを登録
btn.setOnClickListener(
・・・
・・・
);

3.実装クラスを用意
new View.OnClickListener() {
・・・
}

実行結果は以下のようになります。

 

Activityの状態遷移とライフサイクルイベント

Activityの概念はだいたい以下の図の動きになります。

外部操作によってアプリが起動され、アプリ自身の実行状態が生まれます。
ここから他アプリに遷移した場合、実行状態は一時停止状態に切り替わり停止状態へと
状態変化が行われていきます。
また、遷移先の他アプリが終了となれば、再び実行状態に戻り、自身の終了命令によって
一時停止状態→停止状態と順に状態が変わっていき最終的に消滅状態へと移っていきます。

これが基本的なActivityの状態遷移となります。

また、不測の事態に陥った場合にはAndroid OSによって強制終了となる場合もあります。

Activityのライフサイクルイベント

上記図のActivity全体遷移図が頭の中で描ければ、実際にどういったイベント処理で状態遷移が
行われていくのかを考える必要があります。

実際にこの全体の状態遷移を実行するイベントが以下のものになります。
(細かい内容はここでは割愛します)

「Create」処理、「Start」処理、「Resume」処理、「Pause」処理
「Stop」処理、「Restart」処理、「Destroy」処理

上記のような処理を経て「実行」「一時停止」「停止」「消滅」などの状態遷移が行われますので、アプリの作り手としては状態の遷移を考慮して必要な処理をどうしたいか、その内容を各イベント内に記述して実装していけばいいだけですね。

これがActivityのライフサイクルです。

 

【Android開発】アプリのタイトルバーを非表示にする方法

デフォルトでアプリの新規プロジェクトを作成すると下図のようにActivityに赤枠のようにアプリのタイトルが表示されます。
こういったタイトル領域を削ってアプリ画面の領域リソースをフルに使った画面設計を計画する場合、AndroidManifest.xmlの記述修正で対応が可能になります。

アプリのタイトルバーを消す方法

AndroidManifest.xml内で以下の記述箇所があれば、その記述箇所を修正します。
記述箇所がない場合は、修正内容を追記してAndroidManifest.xmlファイルを保存することで対応ができます。

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

android:theme=”@style/AppTheme”をandroid:theme=”@android:style/Theme.Black.NoTitleBar.Fullscreen”に変更する

たったこれだけの修正で実行アプリの画面からタイトルが消えます。
是非、試してみてください。



上記、修正でもタイトルバーが消えない場合、メインアクティビティーのxmlファイルを確認してみてください。

以下のようなツールバーレイアウトに関する記述があればこれをまるっと削除します。
これで完全にタイトルを消すことができます。

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

【Android開発】レイアウトクラス

レイアウトクラスはフレーム枠の画面位置や大きさ、およびウィジェットクラスの配置を決定するもので、レイアウトクラス同士は入れ子状態になっても問題はありません。
機能面ではViewGroupクラス/Viewクラスを継承するのでこの両クラスのメソッドを使用することができます。
TableLayoutクラスはLinearLayoutクラスを経由してViewGroupクラス/Viewクラスを継承し、ScrollViewクラスはFrameLayoutクラスを経由してViewGroupクラス/Viewクラスを継承します。
AbsoluteLayoutクラスはSDK1.5以降非推奨になっている為、ここでは割愛をしています。

LinearLayoutクラス

LinearLayoutクラスはUIオブジェクトを縦方向または横方向に順番に並べていきます。
LinearLayoutクラスの実装メソッドはsetOrientationメソッド/setGravityメソッドの2つだけです。

    • setOrientationメソッド

子の配置を設定します。
メソッドの引数、またレイアウトXML上での属性値は以下の表のようになります。

メソッド引数 属性値 概要
setOrientation.VERTICAL vertical 縦方向への配置
setOrientation.HORIZONTAL horizontal 横方向への配置
    • setGravityメソッド

子の配置位置やサイズ変更を設定します。
レイアウトエリアの横位置を左寄せ・中央揃え・右寄せ、縦位置を上揃え・中央揃え・下揃えを指定します。またサイズ変更は、幅や高さをレイアウト枠いっぱいに広げるかどうかの設定を行います。

レイアウト設定の一例を下図に掲載。

TableLayoutクラス

TableLayoutクラスは、UIオブジェクトをテーブルのマス目に配置します。
また、TableLayoutは行数のTableRowだけを集約し、列数の集約はTableRowが行います。

TableLayoutのメソッド/属性と概要

メソッド 属性値 概要
setColumnCollapsed android:collapseColumns 折り畳み
setColumnShrinkable android:shrinkColumns 幅縮小可の指定
setColumnStretchable android:stretchColumns 幅拡張可の指定

TableRowの属性と概要

属性 概要
android:layout_column 配置する列番号の指定
android:layout_span 占有する列数の指定

FrameLayoutクラス

FrameLayoutクラスは、1つだけのUIオブジェクトを格納するためのレイアウトクラスです。
1つのオブジェクトを他のオブジェクトとから独立させたい場合に使用します。

FrameLayoutクラスのメソッドと属性

メソッド 属性 概要
setForeground android:foreground 前景の設定
setForegroundGravity android:foregroundGravity 前景オブジェクトの配置方法

setForeground

前景設定となる為、追加するオブジェクトが背景よりもサイズが大きい場合FrameLayoutは前景だけの表示となります。
これは追加オブジェクトに対してオーバーレイした形で表示されることを意味しています。

setforegroundGravity

前景となるオブジェクトの配置方法を指定するメソッドです。
属性値は、以下の表の通りGravityの属性値と同じです。

setforegroundGravity属性値

配置パターン 属性値 概要
横方向の位置 left 左寄せ
right 右寄せ
center_horizontal 中央寄せ
縦方向の位置 top 上寄せ
bottom 下寄せ
center_vertical 中央寄せ
縦横一括 center 縦横中央寄せ
横幅合わせ fill_horizontal オブジェクトの幅をエリアいっぱいに合わせる
高さ合わせ fill_vertical オブジェクトの高さをエリアいっぱいに合わせる
縦横一括合わせ fill 横幅・高さをエリアいっぱいに合わせる

ScrollViewクラス/HorizontalScrollViewクラス

Android端末の縦幅・横幅を超えたレイアウトを実装したい場合に縦方向へのスクロール対応、横方向へのスクロール対応を行うことができます。
スクロール対応を行わず、実機の画面サイズを超過したレイアウトを設計した場合、画面からはみ出る部分での操作は不可能です。
また、スクロールさせたいエリアも自由に設定することができ、目的に応じてスクロールさせたいオブジェクトエリアの1つ上の階層にScrollViewタグを設定させてあげます。

ScrollViewタグ

縦方向へのスクロールを可能とする

HorizontalScrollViewタグ

横方向へのスクロールを可能とする

【Android開発】Viewクラス/ViewGroupクラス

Viewクラス

ViewクラスはすべてのUIクラスのベースとなるクラスです。
Viewクラスが提供するメソッドはUIクラスに共通するもので、JavaコードやLayoutリソースの中で使用されます。

Viewクラスのメソッドと概要一覧

メソッド 概要
setBackgroundColor 背景色の設定
setBackgroundResource Colorリソース指定による背景色設定
setId ID設定
getId ID取得
setTag タグ設定
getTag タグ取得
setOnClickListener クリックイベントメソッド登録
setClickable クリック可設定
setPadding 余白設定
setLayoutParams 幅、高さ設定
setVisibility 表示/非表示設定



ViewGroupクラス

ViewGroupクラスは、レイアウトやウィジェットを親子の関係に構造化するクラスです。主な機能としては、レイアウトやウィジェットを子として追加する機能や子とする際の位置決めを行う機能を実装しています。レイアウトクラスはこのViewGroupクラスを継承することでコンテナとしての機能をもつことができます。

Viewクラスのメソッドと概要一覧

メソッド 概要
setClipChildren 子の描画範囲設定
setClipToPadding Paddingを含む子の描画範囲設定
addView(View) 子の追加
addView(View,ViewGroup.LayOutParams) 子の追加(パラメータ付)
removeView 子の削除

setClipChildren

子の描画範囲の制限を設定するメソッド
引数にTrueをセットすることで親の枠内を超えた位置に子を配置することができないよう制限

setClipPadding

引数にTrueをセットすることで親のパディング内の位置に子を配置することができないよう制限

addView

子のUIオブジェクトを親に追加

removeView

子のUIオブジェクトを親から削除

【Android開発】XMLファイルで使用する単位についてのまとめ

Android開発のレイアウト設定では決まった単位を使用することになっています。
そこでAndroid開発で使用できる単位についてのまとめておきます。

 

単位 正式名称 概要
px pixels ピクセルをそのまま使用した単位
pt points 1/72インチを1にした単位
mm millimeters ミリメートル
in inches インチ
dp(dip) Density Independent Pixels 解像度に依存しない仮想的pixel
sp Scale Independent Pixels 指定フォントサイズに依存する仮想的pixel単位



上記単位を使用して表示するウィジェットの幅や高さを指定することができますが、
Androidでは以下の定数を使って表示領域を指定することが多いので合わせてまとめておきます。

定数 概要
fill_parent 親の幅や高さいっぱいにウィジェットを表示する
wrap_parent 表示する内容を包括するレベルで幅や高さを決定する
match_parent fill_parentと同様。API8以降にfill_parentからmatch_parentに呼称が変更