Я видел этот новый стиль Snackbar в приложении Outlook для Android и теперь искал его в документации по материалам:
https://material.io/design/components/snackbars.html
Кто-нибудь знает, как создать эти «смещенные закуски»?
Я видел этот новый стиль Snackbar в приложении Outlook для Android и теперь искал его в документации по материалам:
https://material.io/design/components/snackbars.html
Кто-нибудь знает, как создать эти «смещенные закуски»?
как создать те «офсетные закуски»?
Вы можете получить LayoutParams
SnackBar и добавить к нему нижнюю и боковую маржу.
Попробуйте, как код ниже
public static void showSnackbar(Snackbar snackbar, int sideMargin, int marginBottom) {
final View snackBarView = snackbar.getView();
// Depend upon your parent Layout Use `LayoutParams` of that Layout
final FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) snackBarView.getLayoutParams();
params.setMargins(params.leftMargin + sideMargin,
params.topMargin,
params.rightMargin + sideMargin,
params.bottomMargin + marginBottom);
snackBarView.setLayoutParams(params);
snackbar.show();
}
shape
drawable и установив его в качестве фона для закусочной.
- person adityakamble49; 18.07.2018
Вам нужно сделать всего три вещи, чтобы создать закругленную SnackBar, подобную Material:
Вот полный код:
Snackbar.make(
findViewById(R.id.coordinator_layout),
"Your text here",
Snackbar.LENGTH_SHORT
).apply {
view.layoutParams = (view.layoutParams as CoordinatorLayout.LayoutParams).apply {
setMargins(
12,
12,
12,
12
)
}
view.background = resources.getDrawable(R.drawable.round_corner, null)
}.show()
и вот код для круглого угла, который можно рисовать в drawable / round_corner:
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#323232"/>
<corners android:radius="4dp"/>
</shape>
Вам нужно использовать новую тему «Материал». В вашем build.gradle import implementation 'com.google.android.material:material:1.2.0-alpha06'
Измените весь свой импорт Snackbar на:
import com.google.android.material.snackbar.Snackbar
Затем в вашем файле style.xml ваша родительская тема должна быть одной из тем материала:
Theme.MaterialComponents.Light.DarkActionBar
Theme.MaterialComponents.DayNight.NoActionBar
Я добавил эти стили из https://material.io/develop/android/components/snackbars/
<style name="Theme.App" parent="Theme.MaterialComponents.*">
...
<item name="snackbarStyle">@style/Widget.App.Snackbar</item>
<item name="snackbarButtonStyle">@style/Widget.App.SnackbarButton</item>
</style>
<style name="Widget.App.Snackbar" parent="Widget.MaterialComponents.Snackbar">
<item name="materialThemeOverlay">@style/ThemeOverlay.App.Snackbar</item>
<item name="actionTextColorAlpha">1</item>
</style>
<style name="Widget.App.SnackbarButton" parent="Widget.MaterialComponents.Button.TextButton.Snackbar">
<item name="android:textColor">@color/shrine_pink_100</item>
</style>
<style name="ThemeOverlay.App.Snackbar" parent="">
<item name="colorPrimary">@color/shrine_pink_100</item>
<item name="colorOnSurface">@color/shrine_pink_900</item>
</style>
и это работает! Изменение кода / макета / фона программно не помогло мне
Вы можете просто использовать значение по умолчанию Snackbar
в библиотеке компонентов материала:
Если вы хотите изменить поле Snackbar
, вы можете добавить в тему своего приложения атрибут snackbarStyle
:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<item name="snackbarStyle">@style/MySnackbar</item>
</style>
с участием:
<style name="MySnackbar" parent="Widget.MaterialComponents.Snackbar">
<item name="android:layout_margin">32dp</item>
</style>