Android Studioで作成しているアプリのステータス バーの色を変更して、Android Lollipop 5.0 以降で静的な色に変更し、Android OS の下位バージョンを実行しているモバイルでクラッシュしないようにするにはどうすればよいですか。
質問する
4347 次
3 に答える
0
これは 2 つの方法で行うことができます。次のようにテーマに属性を追加します。
スタイル.xml
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">>#ED3B3B</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">#BE2F2F</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item name="colorAccent">#4DB6AC</item>
<!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight & colorSwitchThumbNormal. -->
</style>
AndroidManifest のアプリケーション タグには、AppTheme のテーマ属性が必要です。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"> // This
または、後の段階でステータスバーの色を動的に変更したい場合、たとえばボタンをクリックしたり、画像の読み込みが完了した後にJavaクラス内で使用できます
if (android.os.Build.VERSION.SDK_INT >= 21){
Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor("your color"));
}
于 2015-10-08T03:04:22.480 に答える
0
これを使ってみてください、これは私にとってはうまくいきます
//changing statusbar
if (android.os.Build.VERSION.SDK_INT >= 21){
Window window = this.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(this.getResources().getColor(R.color.primary_dark));
}
色の変更の場合 ActionBar :
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">#ffff00</item>
</style>
アプリケーションタグのマニフェストで宣言します
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyActionBar" >
それが役立つことを願っています
于 2015-10-08T02:54:44.630 に答える