- 構文:
-
<activity android:allowTaskReparenting=["true" | "false"] android:alwaysRetainTaskState=["true" | "false"] android:clearTaskOnLaunch=["true" | "false"] android:configChanges=["mcc", "mnc", "locale", "touchscreen", "keyboard", "keyboardHidden", "navigation", "orientation", "screenLayout", "fontScale", "uiMode"] android:enabled=["true" | "false"] android:excludeFromRecents=["true" | "false"] android:exported=["true" | "false"] android:finishOnTaskLaunch=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="Drawable リソース" android:label="文字列リソース" android:launchMode=["multiple" | "singleTop" | "singleTask" | "singleInstance"] android:multiprocess=["true" | "false"] android:name="文字列" android:noHistory=["true" | "false"] android:permission="文字列" android:process="文字列" android:screenOrientation=["unspecified" | "user" | "behind" | "landscape" | "portrait" | "sensor" | "nosensor"] android:stateNotNeeded=["true" | "false"] android:taskAffinity="文字列" android:theme="リソースまたはテーマ" android:windowSoftInputMode=["stateUnspecified", "stateUnchanged", "stateHidden", "stateAlwaysHidden", "stateVisible", "stateAlwaysVisible", "adjustUnspecified", "adjustResize", "adjustPan"] > . . . </activity>
- 親の要素:
<application>- 子にできる要素:
<intent-filter>
<meta-data>- 説明:
- アプリケーションの可視的なユーザインターフェイスを担う部分の実装をしたアクティビティ ( Activity のサブクラス ) を宣言します。すべてのアクティビティは、マニフェストファイルで
<activity>要素で表現されている必要があります。そこに宣言されていないものはシステムで見ることはできず、実行もされません。 - 属性:
-
android:allowTaskReparenting- アクティビティが、それを開始したタスクから、アクティビティに対して親和性を持つタスクへと、次にそのタスクが前面に現れるタイミングで移動可能かどうかの指定です。"
true" は移動可能で、"false" は、それを開始したタスクに留まる必要がある場合の指定です。この属性が設定されていない場合、それに相当する
<application>要素のallowTaskReparenting属性により設定された値がアクティビティの割り当てられます。 デフォルト値は "false" です。通常、アクティビティが開始したときは、アクティビティは、それを開始したタスクに関連付けられ、その生存期間中はずっとそこに留まります。この属性は、現在のタスクがもう表示の必要がなくなったとき、それと親和性のあるタスクへと強制的に親を再構成する目的で使用することができます。一般的に、アプリケーションのアクティビティを、そのアプリケーションと関連するメインのタスクに移すように仕向けるために、これが使用されます。
-
例えば、e-mail メッセージがウェブページへのリンクを含んでいる場合、そのリンクをクリックすることにより、そのページを表示するアクティビティが立ち上がります。そのアクティビティにはブラウザアプリケーションが定義されていますが、e-mail のタスクの一部として起動されています。ブラウザのタスクが親として再構成されたとすると、ブラウザが次に前面にきたときにそれが表示され、再度 e-mail タスクが前面にきたときそれが消滅します。
taskAffinity属性によりアクティビティの親和性が定義されます。タスクの親和性はそのルートのアクティビティの親和性を読み込んで決定されます。したがって、当然、ルートのアクティビティは同じ親和性を持つタスクに常に存在します。"singleTask" または"singleInstance" の起動モードのアクティビティは、ルートタスクにおいてのみ存在できることから、親の再構成は "standard" と "singleTop" モードに制限されます (launchMode属性も参照してください ) 。 android:alwaysRetainTaskState- アクティビティが存在するタスクの状態が、常にシステムに保持されるかどうかの指定です。"
true" は保持され、"false" は、ある一定の状況において、システムがタスクを初期の状態にリセットすることを許可します。デフォルト値は "false" です。これはタスクのルートのアクティビティに対してのみ意味のある属性です。つまり、それ以外ののアクティビティでは無視されます。通常、システムは、ユーザがホームスクリーンからそのタスクを再度選択したときに、ある一定の状況において、システムがタスクをクリア ( ルートのアクティビティの上に積まれたスタックからすべてのアクティビティを削除して ) します。一般的に、30 分といった一定の期間にユーザがタスクにアクセスしなかったような場合に行われます。
しかしながら、この属性が "
true" のときは、ユーザがどのようにしてそのタスクにアクセスしたかに関わらず、その最後の状態に戻ります。これは、失いたくない状態がたくさんある ( 複数のタブを開いてるような ) 、例えばブラウザのようなアプリケーションで便利です。 android:clearTaskOnLaunch- ホームスクリーンから再起動されるときはいつでも、ルートのアクティビティを除くすべてのアクティビティがタスクから除去するかどうかの指定です。 "
true" はすべて除去し、そのルートアクティビティのみにし、"false" はそのようにしません。デフォルト値は "false" です。この属性は新たなタスクを開始するアクティビティ ( ルートのアクティビティ ) に対してのみ意味があります。つまりタスクのそれ以外のアクティビティでは無視されます。この値が "
true" のとき、ユーザがタスクを再度開始したときは、ユーザがタスクで最後に行ったことや、最後にそこから離れるために BACK や HOME を使用したかどうかには関わらず、毎回そのルートのアクティビティに連れ戻されます。この値が "false" のときは、なんらかの状況でアクティビティのタスクはクリアされます (alwaysRetainTaskState属性を参照してください ) が、それは常に行われるわけではありません。例えば、だれかがアクティビティ P をホームスクリーンから起動し、そこからアクティビティ Q へと遷移したとします。ユーザが次に HOME を押し、アクティビティ P に戻ります。通常ユーザは、P のタスクで最後に何をしていても、アクティビティ Q は見えるでしょう。しかしながら、P がこのフラグを "
true" に設定していた場合、ユーザが HOME を押しタスクがバックグラウンドになったときに、すべての先頭にあるアクティビティ ( このケースでは Q ) が除去されます。よって、タスクでの実行中にユーザが見えるのは P のみとなります。この属性と
allowTaskReparentingが共に "true" の場合、親の再構成が可能なアクティビティはどれでも同じ親和性を共有しているタスクへと移動します。つまり、残ったアクティビティはその後、上で説明したように、すべて捨てられます。 android:configChanges- アクティビティ自身がハンドリングする設定の変更を列挙します。列挙していない変更が発生した場合、アクティビティは停止後に再起動され、アクティビティは実行を維持し、その
onConfigurationChanged()メソッドが呼び出されます。以下の文字列のどれか、またはすべてをこの属性に設定することができます。値は例えば、 "
locale|navigation|orientation" のように '|' で分割されます。値 説明 " mcc"IMSI モバイルの国コード (MCC) が変更された。つまり、SIM が検出され、MCC が更新された。
" mnc"IMSI モバイルのネットワークコード (MNC) が変更された。つまり、SIM が検出され、MNC が更新された。 " locale"ロケールが変更された。例えば、ユーザが表示されるべきテキストの新たな言語を選択した。 " touchscreen"タッチスクリーンが変更された ( これは通常発生しない ) 。 " keyboard"キーボードが変更された。例えば、ユーザが外部キーボードを差し込んだ場合。 " keyboardHidden"キーボードのアクセシビリティが変更された。例えば、ユーザがキーボードを外に引き出した。 " navigation"ナビゲーションタイプが変更された ( これは通常発生しない ) 。 " orientation"オリエンテーションが変更された。つまり、ユーザがデバイスを回転させた。 " screenLayout"画面レイアウトが変更された。これは異なる画面表示がアクティブになることが起因する可能性がある。 " fontScale"フォントスケールの倍率が変更された。つまり、ユーザが新たなグローバルフォントサイズを選択した。 " uiMode"ユーザインターフェイスのモードが変更された。これはユーザがデスクまたは車載ドックにデバイスを置くかナイトモードに変更されたことが起因する可能性がある。 UiModeManager参照。API レベル 8 で導入された。これらすべての設定が変更されることにより、アプリケーションで見せているリソースの値に影響を与えることができます。したがって、
onConfigurationChanged()が呼び出されたとき、その変更を適切にハンドリングするためにすべてのリソース ( ビューレイアウト、Drawable、その他 ) を再度取得し直すことが通常は必要となってきます。 android:enabled- システムによりアクティビティをインスタンス化できるかどうかの指定です。"
true" は可能で、"false" は不可です。デフォルト値は "true" です。<application>要素自体にはenabled属性があり、アクティビティを含む、すべてのアプリケーションコンポーネントに適用されます。<application>と<activity>の属性はアクティビティを有効にするために、共に "true" ( 共にデフォルトとして ) にする必要があります。どちらかが "false" の場合は無効、すなわちインスタンス化はできなくなります。 android:excludeFromRecents- ユーザに対し表示可能なアクティビティの最近起動されたリストから、このアクティビティを除外すべきかどうかの指定です。"
true" は除外すべきで、 "false" は含めるべきという指定です。デフォルト値は "false" です。
android:exported- アプリケーションのコンポーネントがアクティビティを起動できるかどうかの指定です。"
true" は可能、"false" は不可です。"false" の場合、同じアプリケーションのコンポーネントによってのみまたは同じユーザ ID を持つアプリケーションによってのみアクティビティを起動することができます。デフォルト値はアクティビティがインテントフィルタを含んでいるかどうかに依存します。フィルタが存在しないということは、明確なクラス名を特定することによってのみアクティビティが呼び出されるということを意味します。これは、アクティビティが内部的に使用するアプリケーションのみを対象としていることを意味します(外部はその名前を知ることがないのという理由から) 。このケースでは、デフォルト値は "
false" となります。 その一方で、ひとつでもファイルがあるものは、このアクティビティが外部からでも使用されるアプリケーションを対象としているということを意味しています。よってデフォルト値は "true" となります。アクティビティを他のアプリケーションに公開することを制限する方法としては、この属性の設定以外にもあります。アクティビティの呼び出しが可能な外部エンティティを制限するために許可を使用することもできます (
permission属性参照) 。 android:finishOnTaskLaunch- 存在するアクティビティのインスタンスが、ユーザが再度そのタスクを起動する ( ホームスクリーンのタスクを選択する ) たびに、停止 ( 終了 ) されるべきかどうかの設定です。"
true" は停止され、"false" は停止されません。デフォルト値は "false" です。この属性と
allowTaskReparentingが共に "true" の場合、この属性の方がもう一方に勝ります。アクティビティの親和性は無視されます。アクティビティは親の再構成が行われず、破棄されます。 android:hardwareAccelerated- ハードウェアにより加速されたレンダリングをこのアクティビティで有効にすべきかどうかの指定で、有効にする場合は "
true" 、そうでない場合は "false" にします。デフォルト値は "false" です。Android 3.0 からは、ハードウェアアクセラレーションによる OpenGL レンダラがアプリケーションで利用可能となり、一般的な 2D グラフィックスの処理パフォーマンスが向上しました。ハードウェアアクセラレーションによるレンダラが有効になると、Canvas、Paint、Xfermode、ColorFilter、Shader、および Camera のほとんどの処理が加速されます。これによりスムーズなアニメーション、スムーズなスクロール、全体的な反応の向上が見込まれ、それが明示的にフレームワークの OpenGL ライブラリを利用していないアプリケーションでもそのようになります。
すべての OpenGL 2D 処理が加速される訳ではないという点に注意してください。ハードウェアアクセラレーションによるレンダラを有効にした場合、エラーのない状態でレンダラを利用できていることを必ずテストするようにしてください。
-
android:icon- アクティビティを表現するアイコンです。アクティビティをユーザに表示する必要があるときに、スクリーン上に表示されるアイコンです。例えば、ランチャーウィンドウに表示される初期化アクティビティに対するアイコンがあります。アイコンは大抵ラベルを伴っています (
label属性参照 ) 。この属性はイメージ定義を含めた drawable リソースに対する参照を設定する必要があります。これが設定されていない場合は、アプリケーション全体に設定されたアイコンを代わりに使用します (
<application>要素のicon属性参照 ) 。アクティビティのアイコンは、ここでセットするか
<application>要素で行うかですが、すべてのアクティビティのインテントフィルタに対するデフォルトアイコンもあります (<intent-filter>要素のicon属性参照 ) 。 android:label- ユーザが読めるアクティビティのラベルです。アクティビティをユーザに表示する必要があるときに、スクリーン上に表示されるラベルです。これは大抵アイコンと共に表示されます。
この属性が設定されていない場合は、アプリケーション全体に設定されたラベルを代わりに使用します (
<application>要素のlabel属性参照 ) 。アクティビティのラベルは、ここでセットするか
<application>要素で行うかですが、すべてのアクティビティのインテントフィルタに対するデフォルトアイコンもあります (<intent-filter>要素のlabel属性参照 ) 。このラベルは文字列リソースへの参照を設定すべきで、そうすることでユーザインターフェイスでの他の文字列と同じようにローカライズが可能となります。しかしながら、便宜上、アプリケーション開発中は文字列の即値を直接設定するこもとできます。
android:launchMode- アクティビティの起動方法を指示します。それには 4 つのモードがあり、 アクティビティがインテントをハンドリングするよう求められたときに何を発生させるかを決定する目的で、 Intent オブジェクトにおけるアクティビティフラグ (
FLAG_ACTIVITY_*定数 ) と共に機能します。それらは以下です。"
standard"
"singleTop"
"singleTask"
"singleInstance"デフォルトのモードは "
standard" です。モードは 2 つのグループに分類され、一方は "
standard" と "singleTop" のアクティビティ、もう一方は "singleTask" と "singleInstance" のアクティビティです。"standard" または "singleTop" のアクティビティ起動モードは、何回もインスタンス化が可能です。インスタンスはどのタスクにも所属でき、アクティビティスタックのどこにでも位置することができます。通常、これらはstartActivity()を呼び出したタスク内で起動されます ( インテントオブジェクトがFLAG_ACTIVITY_NEW_TASK指示を含んでいない場合で、そのケースでは異なるタスクが選択されています。 taskAffinity 属性を参照してください) 。 -
対照的に、"
singleTask" と "singleInstance" アクティビティは、ひとつのタスクのみしか開始できません。それらは常にアクティビティスタックのルートに置かれます。さらに、デバイスはアクティビティのインスタンスを一度にひとつしか、要するにタスクにひとつしか保持できません。"
standard" と "singleTop" モードは、お互い 1 点だけの違いがあります。"standard" のアクティビティに対する新たなインテントがあれば常に、そのインテントに応答するためにアクティビティの新たなインスタンスを作成します。それぞれにインスタンスは単一のインテントをハンドリングします。同様に、"singleTop" の新たなアクティビティはもまたひとつの新たなインテントをハンドリングするかもしれません。しかしながら、ターゲットのタスクが既存のアクティビティのインスタンスを現時点でスタックの先頭に持っている場合は、このインスタンスが新たなインテントを受信する (onNewIntent()呼び出しにおいて ) ようになります。つまり、新たなインスタンスは作成されません。他の状況において、例えば、ターゲットのタスクに "singleTop" アクティビティのインスタンスが存在し、スタックの先頭にないまたはターゲットタスクにない場合は、新たなインスタンスが作成されスタックの先頭に格納されます。 -
"
singleTask" と "singleInstance" モードも同様に、お互いに 1 点だけの違いがあります。"singleTask" アクティビティは他のアクティビティがそのタスクの一部となることを許可します。これはアクティビティスタックのルートに置かれますが、他のアクティビティ ( "standard" と "singleTop" アクティビティは必然的に ) は同じタスク内で起動されます。一方、"singleInstance" アクティビティは、他のアクティビティがそのタスクの一部とすることを許可しません。これはタスクでの唯一のアクティビティです。もしこれが別のアクティビティを開始した場合、このアクティビティは、まるでインテントでFLAG_ACTIVITY_NEW_TASKが指定されているかのように、別のタスクに割り当てられます。ユースケース 起動モード 複数インスタンス化? 備考 ほとんどのアクティビティ用の通常の起動 " standard"はい デフォルト。システムは常に対象とするタスクにアクティビティの新しいインスタンスを作成し、それにインテントを送ります。 " singleTop"条件付き アクティビティのインスタンスがすでに対象のタスクの先頭にある場合、システムはアクティビティのインスタンスを新たに作成するのではなく、 onNewIntent()メソッドを用いてそのインスタンスにインテントを送ります。特殊な起動
(一般的な用途では推奨されない)" singleTask"いいえ システムは新しいタスクのルートにアクティビティを作成し、それにインテントを送信します。しかしながら、そのアクティビティのインスタンスがすでにある場合、システムはアクティビティのインスタンスを作成するのではなく、 onNewIntent()mメソッドへの呼び出しを介して既存のアクティビティにインテントを送信します。" singleInstance"いいえ " singleTask"と同じですが、システムがそのインスタンスを保持しているタスクに他のアクティビティをなにも起動させないという点は除きます。アクティビティは常にひとつでそのタスクの唯一のメンバーとなります。上の表に示すように、
standardがデフォルトで、ほとんどのタイプのアクティビティで適切なモードです。SingleTop多くのタイプのアクティビティで便利でよくある起動モードです。他のモード、singleTaskとsingleInstanceは、ユーザにはなじみのないものとなりがちで、他のほとんどのアプリケーションとはかけ離れた双方向操作のモデルになってしまうことから、ほとんどのアプリケーションで不適切なモードです。 -
選択した起動モードにかかわらず、アクティビティの起動時と、BACK キー を使って他のアクティビティやタスクから戻って遷移したときの使い勝手を必ずテストしてください。
-
起動モードとインテントフラグの双方向のやり取りについての詳しい情報は、タスクとバックスタック ドキュメントを参照してください。
android:multiprocess- アクティビティのインスタンスが、それを起動したコンポーネントのプロセス内で実行できるかどうかの指定です。"
true" は実行可能、"false" は不可です。デフォルト値は "false" です。通常、アクティビティはそれが定義されているアプリケーションのプロセスで新たにインスタンス化され、アクティビティのすべてのインスタンスが同じプロセス内で実行されます。しかしながら、このフラグが "
true" に設定されている場合、 アクティビティのインスタンスはマルチプロセスで実行可能となり、システムはそれが使用されるたびにインスタンスを作成することが許され ( 許可により許可されているという条件で ) ますが、これはほとんどの場合は必要がなく望ましいものではありません。 android:name- Activity のサブクラスであるアクティビティ実装のクラスの名前です。これは完全修飾のクラス名 ( "
com.example.project.ExtracurricularActivity" のような) でなければなりません。しかしながら、名前の最初の 1 文字をピリオドに ( 例、".ExtracurricularActivity" ) することにより、<manifest>要素で特定したパッケージ名に付加され、簡略化することができます。デフォルトはありません。この名前は特定されなければなりません。
android:noHistory- ユーザがそこから離れるようなナビゲーションを行い、もはやスクリーンでは見えなくなったとき、アクティビティがアクティビティスタックから取り除かれ終了する ( そのメソッドが呼びだされる ) かどうかの指定です。"
true" は終了すべきで、"false" そうすべきでない指定です。デフォルト値は "false" です。"
true" の値は、アクティビティがヒストリトレースを残さないという意味です。タスクでのアクティビティスタックにはそれが残っていないことにより、その後はユーザはそのアクティビティに戻ることはできなくなります。この属性は API レベル 3 で導入されました。
android:permission- クライアントがアクティビティを起動するために必要とする許可、または、インテントに応答するために取得する許可の名前です。
startActivity()またはstartActivityForResult()の呼び出し元が特定の許可を付与されていない場合は、そのインテントはアクティビティに配信されません。この属性が設定されていない場合、
<application>要素のpermission属性で設定された許可がアクティビティに適用されます。どちらの属性も設定されていない場合は、このアクティビティは許可により保護されません。許可に関するより詳しい情報は、前書きの 許可 セクションおよび、別のドキュメントの セキュリティと許可 を参照してください。
android:process- アクティビティが実行されているべきプロセスの名前です。通常は、アプリケーションのすべてのコンポーネントは、アプリケーションに対して作成されたデフォルトのプロセスで実行されます。これはアプリケーションのパッケージと同じ名前を持っています。
<application>要素のprocess属性により、すべてのコンポーネントに対し、異なるデフォルト値を設定することができます。しかし、各コンポーネントは自身にあるprocess属性でデフォルトを上書きすることができ、マルチプロセスの間で、アプリケーションとの分離をはかることができるようになります。この属性にコロン (':') で始まる名前を割り当てる場合は、新たなプロセスが、アプリケーションでプライベートで、それが必要となったときに作成され、アクティビティが実行されます。プロセス名が小文字で始まる場合は、グローバルなプロセスの名前でアクティビティが、その許可が与えられているという条件の下で、実行されます。グローバルプロセスが他のアプリケーションと共有可能となり、利用するリソースを節約につながります。
android:screenOrientation- アクティビティがデバイスに表示されるオリエンテーションの指定です。指定可能な値は以下の中のひとつです。
-
" unspecified"デフォルト値。システムがオリエンテーションを選択します。使用するポリシーは、個別の状況により選択され、デバイスによって異なる可能性があります。 " landscape"ランドスケープオリエンテーション ( 横長で表示 ) 。 " portrait"ポートレートオリエンテーション ( 縦長で表示 ) 。 " user"ユーザが現在推奨しているオリエンテーション。 " behind"アクティビティスタックにあるすぐ下のアクティビティと同じオリエンテーション。 " sensor"物理オリエンテーションセンサにより決定されるオリエンテーション。表示のオリエンテーションはユーザのデバイスの持ち方に依存します。ユーザがデバイスを回すとオリエンテーションが変化します。 " nosensor"物理オリエンテーションセンサを参照をせず決定されるオリエンテーション。センサは無視され、ユーザによるデバイスの動かし方を基に表示の回転は行いません。この特徴以外は、システムは " unspecified" の設定と同じポリシーを使用してオリエンテーションを選択します。
android:stateNotNeeded- アクティビティがその状態を保存せずに、破棄され、無事に再起動されることが可能かどうかの指定です。"
true" は前の状態を参照せずに再起動され、 "false" は前の状態を必要とする指定です。デフォルト値は "false" です。通常は、アクティビティがリソースを保存する目的で一時的に停止しますが、その前にアクティビティの
onSaveInstanceState()メソッドが呼び出されます。このメソッドは Bundle オブジェクトとしてアクティビティの現在の状態を保存し、その後、アクティビティが再起動したときにそのオブジェクトをonCreate()に渡します。この属性が "true" の場合、onSaveInstanceState()呼び出されなくなる可能性があり、onCreate()には、Bundle の代わりにnullが渡されます。これはちょうどアクティビティが初めて起動されたときと同じです。"
true" に設定することにより、アクティビティは回復させた状態なしでも再起動可能であることが保証されます。例えば、ホームスクリーンを表示するアクティビティは、なんらかの理由でクラッシュしてもそのアクティビティが削除されてしまわないことを確実に行うように、この設定を使用します。 android:taskAffinity- アクティビティが持つ親和性の対象となるタスクです。同じ親和性を持つアクティビティは、概念として同じタスク ( ユーザの視点から、同じ "アプリケーション" に ) に属します。タスクの親和性はそのルートのアクティビティにより決定されます。
親和性は 2 つのことを決定します。アクティビティが親の再構成の対象としているタスク (
allowTaskReparenting属性を参照 ) と、FLAG_ACTIVITY_NEW_TASKフラグでアクティビティを起動したときにそのアクティビティに住みかを与えるタスクです。デフォルトでは、アプリケーションのすべてのアクティビティは同じ親和性を持っています。この属性を異なる設定にしてグループ化することができ、また、同じタスク内の異なるアプリケーションで定義されたアプリケーションにアクティビティを配置することもできます。いずれのタスクにも親和性を持たないアクティビティを特定するには、ここに空の文字列を設定します。
この属性が設定されていない場合、アクティビティはアプリケーションに設定されている親和性を継承します (
<application>要素のtaskAffinity属性を参照 ) 。アプリケーションに対するデフォルトの親和性の名前は、<manifest>要素により設定されているパッケージ名です。 android:theme- アクティビティに対する全体のテーマを定義するスタイルに対する参照を指定します。これによりこのテーマが使用するアクティビティのコンテキストに自動的に設定されます (
を参照してください。"開始中" アニメーションをアクティビティが起動される前に、実際のアクティビティの状況をよりふさわしい表示にすることもあるかもしれません ) 。setTheme()この属性が設定されていない場合は、アクティビティはアプリケーション全体に設定されたテーマを継承します。
<application>要素のtheme属性を参照してください。その属性も設定されていなければ、デフォルトのシステムテーマが使用されます。 android:windowSoftInputMode- アクティビティのメインウィンドウとスクリーンにソフトウェアキーボードを含んだウィンドウとの相互作用する方法を指定します。この属性を設定することにより、以下の 2 つのことが影響を受けます。
-
- アクティビティがユーザの操作により、フォーカスされたときのソフトウェアキーボードの状態。つまり、それが現れているか隠れているかの状態。
- ソフトウェアキーボードによってウィンドウの一部が隠れてしまったときの、アクティビティのメインウィンドウに合わせる調整 。つまり、ソフトウェアキーボードのために場所を空け、アクティビティを小さくリサイズするか、それとも、現在フォーカスされているものを見えるようにするために、そのコンテンツを方向転換させるかどうかの調整。
設定する値は、以下のテーブルに列挙されている値のうちどれかひとつか、または "
state..." のうちひとつの値と "adjust..." のうちひとつの値の結合を指定する必要があります。どちらかのグループを複数、例えば"state..." を複数回指定した場合、指定していないことになってしまいます。個々の値は垂直バー (|)で分割されます。 例えば、以下のようになります。<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
ここに設定された値は ( "
stateUnspecified" および "adjustUnspecified" を除き ) 、テーマで設定された値を上書きします。値 説明 " stateUnspecified"ソフトウェアキーボード (現れているか隠れているかどうか) の状態を特定しません。システムは適切な状態を選択するか、テーマせの設定に委ねます。 これはソフトウェアキーボードの振る舞いのデフォルトの設定です。
" stateUnchanged"アクティビティが前面にきたときに、ソフトウェアキーボードが最後の状態、現れているか隠れているかどうかの状態を保持します。
" stateHidden"ユーザがアクティビティを選択したときに、つまり、別のアクティビティから離脱してこのアクティビティに戻ってきたときではなく、ユーザが積極的にアクティビティに向かってナビゲートしたときに、ソフトウェアキーボードが隠れます。 " stateAlwaysHidden"アクティビティのメインウィンドウに入力のフォーカス時に、ソフトウェアキーボードが常に隠れます。 " stateVisible"正常に適正なとき( ユーザがアクティビティのメインウィンドウにに向かってナビゲートしたとき ) ソフトウェアキーボードが現れます。 " stateAlwaysVisible"ユーザがアクティビティを選択したときに、つまり、別のアクティビティから離脱してこのアクティビティに戻ってきたときではなく、ユーザが積極的にアクティビティに向かってナビゲートしたときに、ソフトウェアキーボードを現します。 " adjustUnspecified"これはアクティビティのメインウィンドウがソフトウェアキーボードのために場所を空けるどうか、または現在フォーカスされているものをスクリーン上で見えるようにするためにウィンドウのコンテンツを方向転換させるかどうかの指定を行いません。システムは自動的にこれらのモードのひとつを選択しますが、それは、そのコンテントがスクロール可能なビューのレイアウトを持っているウィンドウのコンテントかどうかにより変わってきます。そのようなビューがある場合は、スクロールがあれば、小さい領域でもウィンドウのすべてのコンテントを見えるという仮定のもとで、このウィンドウがリサイズされます。 これはメインウィンドウの振る舞いのデフォルトの設定です。
" adjustResize"アクティビティのメインウィンドウはソフトェアキーボードが収まるよう常にリサイズされます。 " adjustPan"ソフトウェアキーボードに場所を空けるためにリサイズしないアクティビティのメインウィンドウです。場所を空けるのではなく、ウィンドウのコンテンツは自動的に方向転換し、それにより現在フォーカスされているものがキーボードで邪魔されず、ユーザは常にタイプする部分を見ることができるようになります。これは、ユーザがウィンドウの隠れた部分にアクセスし、相互作用をするのに、ソフトウェアキーボードを閉じる必要がある可能性があることから、一般に、リサイズするよりは好ましい方法ではありません。 この属性は API レベル 3 で導入されました。
- 導入:
- API レベル 1 ( API レベル 3 で追加された
noHistoryとwindowSoftInputModeを除くすべての属性 )
- 参考:
<application>
<activity-alias>