Отображать SnackBar вверху, когда применяется Theme.NoTitleBar.Fullscreen

Я показываю SnackBar в верхней части моего взгляда путем реализации следующего:

Snackbar snack = Snackbar.make(rootlayout, "SnackBar Test!", Snackbar.LENGTH_LONG);
View view = snack.getView();
FrameLayout.LayoutParams params =(FrameLayout.LayoutParams)view.getLayoutParams();
params.gravity = Gravity.TOP;
view.setLayoutParams(params);
snack.show();

Это работает отлично, но проблема в том, что действие выполняется в полноэкранном режиме / NoTitleBar. Я сделал это, добавив в действие в манифесте следующее:

<activity android:name=".MyActivty"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" />

Когда я запускаю его, я получаю следующую ошибку:

Caused by: android.view.InflateException: Binary XML file line #41: Error inflating class <unknown>

Это происходит только тогда, когда я установил Theme.NoTitleBar.Fullscreen,

Может кто-нибудь помочь мне исправить это или указать мне правильное направление?

1 ответ

Решение

Ваша проблема заключается в следующем. Первый Snackbar зависит от библиотеки поддержки дизайна. Который работает с AppCompatActivity. Тема, которую вы пытаетесь использовать, не из библиотеки suport. Чтобы использовать полноэкранную тему appcompat, вы можете использовать эту

<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
</style>

Измените свою тему на эту в манифесте и попробуйте, если она будет работать.

Другие вопросы по тегам