Androidの背景と永続メニューバーを設定する - 古いバージョンで属性を使用するとクラッシュする - テーマ/パターンのアプローチはありますか?
質問
Android 3.0 では、"checked" の概念は "activated" の背景を使用してレンダリングすることができます。これにより、リストの断片をタップしたときに表示される永続的なバーが得られ、リストの右側の断片にコンテキストを提供します (たとえば、Gmail のフォルダーをタップするとそのフォルダーが強調表示され、別のリストの断片が開いてそのフォルダーの会話が表示されます)。
たとえば、フラグメントのサンプルでは、次のようなものが表示されます。
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES));
そのリソース(
android.R.layout.simple_list_item_activated_1
) は、Android 3.0 の新機能です。何がそれを "activated" にするのか。
android:background="?android:attr/activatedBackgroundIndicator"
この属性値は Android 3.0 の新機能で、私が知る限りでは、以前のバージョンの Android で使おうとするとクラッシュします。3.0/large/landscape の組み合わせでは背景をこの魔法の値に設定し、それ以外ではスキップしたいのです。
レイアウトの2つの別々のバージョンを持つことによってこれを達成することができ、1つは
-v11
リソースセットと通常のリソースセットです。レイアウトの大部分は同じで、この 1 つの属性だけが含まれたりスキップされたりするからです。
私は、描画可能なリソースのエイリアスを使用することに挑戦してみました。
android:background
がエイリアスを参照し、エイリアスが
-v11
の区別がつきますが
<bitmap>
は描画対象が
android:src="@null"
.
この問題にはスタイルとテーマのアプローチがあると思いますが、私はそのことについて完全に理解したことがないので (もっと恥ずかしい Android の知識のギャップの 1 つ)、どうすればよいのか完全にわかりません。
3.0 で "activated" を使用し、3.0 より前のバージョンでそれをスキップするための、個別のレイアウトを超えたパターンを解決した人はいますか?
ありがとうございます!
どのように解決するのですか?
スタイルはあなたの味方です...。
2つのvaluesディレクトリを持ち、1つはvalues-v11、もう1つはデフォルトのvaluesです。
それぞれのvaluesディレクトリはstyles.xmlを含んでいますが、違いはデフォルトのvaluesのほうに含まれていることです。
<style name="listViewActivatedStyle"/>
values-v11に含まれる。
<style name="listViewActivatedStyle">
<item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>
とすると、使用するレイアウトは1つで済む。
style="@style/listViewActivatedStyle"
と表示され、適切なものが選択されます。
関連
-
[解決済み] アイテムの親を取得する際にエラーが発生しました。AppCompat v23にアップグレードした後、指定された名前に一致するリソースが見つかりません。
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] Android ConstraintLayout - あるビューを別のビューの上に配置する
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] アプリ内課金テスト:android.test.purchased already owned
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] ブルートゥースアプリケーションのテストにアンドロイドエミュレータを使用するには?
-
[解決済み] Android テーマの背景色を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] Android Webview - キャッシュを完全に削除する
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] ViewPagerのアイテムを強制的に再インスタンス化する方法 [重複].
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?
-
[解決済み] 実行に失敗しました app:processDebugResources Android Studio