前言
修改Snackbar的位置操作需要父布局是FrameLayout或者CoordinatorLayout
其他布局无效,需要使用其他开源的了。
代码
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content),"测试", Snackbar.LENGTH_LONG);
View snackBarView = snackbar.getView();
ViewGroup.LayoutParams layoutParams = snackBarView.getLayoutParams();
// 重新设置属性参数
FrameLayout.LayoutParams cl = new FrameLayout.LayoutParams(layoutParams.width,layoutParams.height);
// 设置显示位置在上居中
cl.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
snackBarView.setLayoutParams(cl);
snackbar.show();
效果
字体颜色字体大小
- JAVA代码方式:
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content),"测试", Snackbar.LENGTH_LONG);
View snackBarView = snackbar.getView();
//内容的字体颜色与大小
TextView tvSnackBarText = snackBarView.findViewById(R.id.snackbar_text);
tvSnackBarText.setTextColor(Color.RED);
tvSnackBarText.setTextSize(30);
ViewGroup.LayoutParams layoutParams = snackBarView.getLayoutParams();
// 重新设置属性参数
FrameLayout.LayoutParams cl = new FrameLayout.LayoutParams(layoutParams.width,layoutParams.height);
// 设置显示位置在上居中
cl.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
snackBarView.setLayoutParams(cl);
snackbar.show();
- XML方式
在你的style.xml中加入snackbarTextViewStyle
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="snackbarTextViewStyle">@style/SnackBarTextView</item>
</style>
<style name="SnackBarTextView" parent="Widget.MaterialComponents.Snackbar.TextView">
<item name="android:textSize">14sp</item>
<item name="android:textColor">@android:color/white</item>
</style>
如果需要修改背景添加snackbarStyle
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Customize your theme here. Theme.AppCompat.Light.NoActionBar-->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:spinnerItemStyle">@style/SpinnerAppearance</item>
<item name="snackbarTextViewStyle">@style/SnackBarTextView</item>
<item name="snackbarStyle">@style/SnackBarStyle</item>
</style>
<style name="SnackBarStyle" parent="Widget.MaterialComponents.Snackbar">
<item name="android:background">@color/colorPrimaryDark</item>
</style>
如果有其他问题可以加我QQ联系875831461