4 に答える
アクションバーがAPIレベル11で実装されていることがわかりますが、3.0未満のデバイスで実行しようとするとどうなりますか?
デフォルトでは、ユーザーは以前と同様にオプションメニューを取得します。または、Weening氏が指摘したように、ActionBarSherlockを使用して、アクションバーをAndroid2.1に戻します。
しかし、これは、アクションバーがすべてプログラムで実行され、レイアウトでは実行されないことを意味しますか?
これはオプションメニューと同じで、主にメニューリソースとJavaコードを使用します。
古いデバイスをサポートするのに本当に「それ」が役立つのなら、SDKで標準に構築/提供されないのはなぜですか?
タイムマシンを作成し、そのコードを2009年にさかのぼるAndroidデバイスに追加することを歓迎します。Mr.Fusionユニットを追跡することで、eBayで使用頻度の低いフラックスコンデンサを見つけることができる場合があります。やや面倒。または、英国にいる場合は、中古のTARDISディーラーを見つけることができるかどうかを確認してください。
それまでの間、フラグメントなどのバックポートにAndroidサポートパッケージを一部GridLayout
使用するため、古いデバイスにネイティブではない新しい機能を使用しながら、ネイティブ実装とのAPIの忠実度を維持できます。新しいデバイス。
同じ外観のアクション バーで古いバージョンの Android をサポートするには、Action Bar Sherlock を参照してください。
彼らのウェブサイトから:
ライブラリは、必要に応じてネイティブ アクション バーを自動的に使用するか、カスタム実装をレイアウトに自動的にラップします。これにより、2.x 以降のすべてのバージョンの Android 用のアクション バーを備えたアプリケーションを簡単に開発できます。
これはかなりうまく機能します。
もう少し冒険好きで、レイアウト、ルック アンド フィールをより細かく制御したい場合は、いつでも自分で実装してみることができます。これは簡単な作業ではありませんが、アクション バーは実際のコンポーネントというよりも ux デザインです。互換性ライブラリのコードは、開始するのに適した場所です。
メニュー、タイトル、アイコンだけが必要な場合の簡単な方法:
- 「Theme.Holo」など、ActionBar でテーマを選択します。
- 新しいメニューを作成する
actionbar.xml
これをアクティビティに実装します
@Override public boolean onCreateOptionsMenu(Menu menu){ MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.actionbar, menu); return true; }
これは古いバージョンのメニューとほぼ同じであるため、古いバージョンには ActionBar がなく、代わりに古いメニューがあります。
または
Geert が既に提案したように、API 11 より前を含むすべてのバージョンで同じ ActionBar が必要な場合:
サポートされていないバージョンの Android で ActionBar を使用しようとすると、アプリケーションがクラッシュするだけです。これを回避するには、利用可能な場合はネイティブ ActionBar を使用するライブラリ ActionBarSherlock を実装できます。それ以外の場合は、同じ機能を持つ独自の ActionBar を作成します。実行時に Android のバージョンを確認して、自分で処理することもできます。実際にActionBarの例があるので、このリンクをチェックアウトします:
http://developer.android.com/training/basics/supporting-devices/platforms.html#version-codes