应用 Theme.NoTitleBar.Fullscreen 时在顶部显示 SnackBar
Display SnackBar at top when Theme.NoTitleBar.Fullscreen is applied
我通过执行以下操作在视图顶部显示 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();
这是完美的,但问题是 activity 是全屏/NoTitleBar,我通过将以下内容添加到清单中的 activity 来完成此操作:
<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>
只有当我将 activity 主题设置为 Theme.NoTitleBar.Fullscreen
时才会发生这种情况。
您的问题如下。
首先Snackbar依赖于支持设计库。适用于 AppCompatActivity。您尝试使用的主题不是来自支持库。为了使用全屏 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>
在清单中也将您的主题更改为此并尝试它是否会起作用。
我通过执行以下操作在视图顶部显示 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();
这是完美的,但问题是 activity 是全屏/NoTitleBar,我通过将以下内容添加到清单中的 activity 来完成此操作:
<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>
只有当我将 activity 主题设置为 Theme.NoTitleBar.Fullscreen
时才会发生这种情况。
您的问题如下。 首先Snackbar依赖于支持设计库。适用于 AppCompatActivity。您尝试使用的主题不是来自支持库。为了使用全屏 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>
在清单中也将您的主题更改为此并尝试它是否会起作用。