Ответ 1
Это официально ошибка и будет исправлена для следующей версии платформы: https://code.google.com/p/android/issues/detail?id=58280
UPDATE: Это, похоже, исправлено на уровне API 19
После обновления моего телефона до Android 4.3 я заметил, что тень под панелью действий больше не отображается. В моем приложении у меня есть пользовательская тень с помощью windowContentOverlay
:
<item name="android:windowContentOverlay">@drawable/shadows_bottom</item>
Он всегда показывался, но теперь он прошел API 18. Удаление этой строки из темы ничего не меняет. в то время как в других версиях API он показывает небольшую тень по умолчанию.
Кто-нибудь еще заметил эту проблему?
Это официально ошибка и будет исправлена для следующей версии платформы: https://code.google.com/p/android/issues/detail?id=58280
UPDATE: Это, похоже, исправлено на уровне API 19
Мне удалось обойти эту ошибку платформы, добавив следующий метод к моей базе FragmentActivity
и вызвав ее в onCreate
после того, как макет был завышен:
/**
* Set the window content overlay on device 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 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 a valid resource, set it as the foreground drawable
// for the content view
if (tv.resourceId != 0) {
((FrameLayout) contentView).setForeground(
getResources().getDrawable(tv.resourceId));
}
}
}
}
}
Это работает хорошо, потому что вам не нужно менять свои темы или динамически добавлять представления в свои макеты. Он должен быть совместим с переходом и может быть легко удален после исправления этой ошибки.