携帯電話をAndroid 4.3にアップグレードした後、アクションバーの下の影が表示されなくなっていることに気付きました。私のアプリでは、windowContentOverlay
を使用したカスタム影があります。
<item name="Android:windowContentOverlay">@drawable/shadows_bottom</item>
それは常に表示されていましたが、現在はAPI 18で消えています。テーマからその行を削除しても何も変わりません。他のAPIバージョンでは、デフォルトのわずかな影が表示されます。
他の誰かがその問題に気づいていますか?
これは公式にはバグであり、次のプラットフォームリリースで修正されます。 https://code.google.com/p/Android/issues/detail?id=5828
更新:これはAPIレベル19で修正されたようです
次のメソッドをベースFragmentActivity
に追加し、レイアウトが拡張された後にonCreate
で呼び出すことで、このプラットフォームのバグを回避できました。
/**
* Set the window content overlay on device's that don't respect the theme
* attribute.
*/
private void setWindowContentOverlayCompat() {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN_MR2) {
// Get the content view
View contentView = findViewById(Android.R.id.content);
// Make sure it's a valid instance of a FrameLayout
if (contentView instanceof FrameLayout) {
TypedValue tv = new TypedValue();
// Get the windowContentOverlay value of the current theme
if (getTheme().resolveAttribute(
Android.R.attr.windowContentOverlay, tv, true)) {
// If it's a valid resource, set it as the foreground drawable
// for the content view
if (tv.resourceId != 0) {
((FrameLayout) contentView).setForeground(
getResources().getDrawable(tv.resourceId));
}
}
}
}
}
テーマを変更したり、レイアウトにビューを動的に追加したりする必要がないため、これはうまく機能します。上位互換性があり、このバグが修正されたら簡単に削除できます。