前言
修改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