Android Material 设计 - 如何在 CollapsingToolbarLayout 折叠后更改 Toolbar 的背景颜色
Android Material Design - How to change background color of Toolbar after CollapsingToolbarLayout is collapsed
用户向下滚动屏幕后,CollapsingToolbarLayout 中的图像消失,留下带有后退按钮、内容标题和设置菜单的工具栏。我想知道如何仅在工具栏处于 'collapsed' 状态时更改该工具栏的背景颜色。
我指的操作与此类似,其中工具栏背景颜色变为绿色:
在 CollapsingToolbarLayout 下面我有一个 NestedScrollView 和 CardViews
我认为你在追求 app:contentScrim
。
<android.support.design.widget.CollapsingToolbarLayout
...
app:contentScrim="?attr/colorPrimary">
<!-- Toolbar and ImageView here -->
</android.support.design.widget.CollapsingToolbarLayout>
先删除
app:contentScrim="?attr/colorPrimary">
来自 CollapsingToolbarLayout
添加库
compile 'com.android.support:palette-v7:23.2.1'
并在java代码中添加以下代码
Bitmap bitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.ny);
Palette.generateAsync(bitmap,
new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
Palette.Swatch vibrant =
palette.getVibrantSwatch();
int mutedColor = palette.getVibrantSwatch().getRgb();
if (vibrant != null) {
// If we have a vibrant color
// update the title TextView
collapseToolbar.setBackgroundColor(mutedColor);
// mutedColor = palette.getMutedColor(R.attr.colorPrimary);
collapseToolbar.setStatusBarScrimColor(palette.getDarkMutedColor(mutedColor));
collapseToolbar.setContentScrimColor(palette.getMutedColor(mutedColor));
}
}
});
只需使用 CollapsingToolbarLayout
XML 属性 contentScrim
设置 Toolbar
在 collapsed
模式下的背景颜色。
app:contentScrim="YOUR_TOOLBAR_COLOR"
这是一个例子:
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/img_group_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/anim_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
希望对你有所帮助~
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.header);
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
@SuppressWarnings("ResourceType")
@Override
public void onGenerated(Palette palette) {
Palette.Swatch vibrant =
palette.getVibrantSwatch();
if (vibrant != null) {
collapsingToolbar.setBackgroundColor(getResources().getColor(R.color.cpb_blue));
collapsingToolbar.setStatusBarScrimColor(getResources().getColor(R.color.cpb_blue));
collapsingToolbar.setContentScrimColor(getResources().getColor(R.color.cpb_blue));
}
}
});
您可以使用 AppBarLayout
的偏移侦听器并根据所需的行为更改 CollapsingTollbar
属性。
appBarLayout.addOnOffsetChangedListener { _, verticalOffSet ->
if (Math.abs(verticalOffSet) == appBarLayout.totalScrollRange) {
//Collapsed
toolBar.setBackgroundDrawable(ContextCompat.getDrawable(this,
R.drawable.last_revolut_gradient))
} else {
//Expanded
toolBar.setBackgroundColor(ContextCompat.getColor(this,
android.R.color.transparent))
}
}
也许您一直在寻找的是这个:
myCollapsingToolbar.setContentScrimColor(getResources().getColor(R.color.my_color_id));
它对我有用,并且在折叠工具栏折叠后更改了它的颜色,以帮助我适合在折叠工具栏全尺寸显示时显示的图像的主要颜色。有了这个,颜色显然可以通过编程来改变!
我知道我来晚了,但我希望它能帮到你。
用户向下滚动屏幕后,CollapsingToolbarLayout 中的图像消失,留下带有后退按钮、内容标题和设置菜单的工具栏。我想知道如何仅在工具栏处于 'collapsed' 状态时更改该工具栏的背景颜色。
我指的操作与此类似,其中工具栏背景颜色变为绿色:
在 CollapsingToolbarLayout 下面我有一个 NestedScrollView 和 CardViews
我认为你在追求 app:contentScrim
。
<android.support.design.widget.CollapsingToolbarLayout
...
app:contentScrim="?attr/colorPrimary">
<!-- Toolbar and ImageView here -->
</android.support.design.widget.CollapsingToolbarLayout>
先删除
app:contentScrim="?attr/colorPrimary">
来自 CollapsingToolbarLayout
添加库
compile 'com.android.support:palette-v7:23.2.1'
并在java代码中添加以下代码
Bitmap bitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.ny);
Palette.generateAsync(bitmap,
new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
Palette.Swatch vibrant =
palette.getVibrantSwatch();
int mutedColor = palette.getVibrantSwatch().getRgb();
if (vibrant != null) {
// If we have a vibrant color
// update the title TextView
collapseToolbar.setBackgroundColor(mutedColor);
// mutedColor = palette.getMutedColor(R.attr.colorPrimary);
collapseToolbar.setStatusBarScrimColor(palette.getDarkMutedColor(mutedColor));
collapseToolbar.setContentScrimColor(palette.getMutedColor(mutedColor));
}
}
});
只需使用 CollapsingToolbarLayout
XML 属性 contentScrim
设置 Toolbar
在 collapsed
模式下的背景颜色。
app:contentScrim="YOUR_TOOLBAR_COLOR"
这是一个例子:
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/img_group_photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/anim_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
希望对你有所帮助~
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.header);
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
@SuppressWarnings("ResourceType")
@Override
public void onGenerated(Palette palette) {
Palette.Swatch vibrant =
palette.getVibrantSwatch();
if (vibrant != null) {
collapsingToolbar.setBackgroundColor(getResources().getColor(R.color.cpb_blue));
collapsingToolbar.setStatusBarScrimColor(getResources().getColor(R.color.cpb_blue));
collapsingToolbar.setContentScrimColor(getResources().getColor(R.color.cpb_blue));
}
}
});
您可以使用 AppBarLayout
的偏移侦听器并根据所需的行为更改 CollapsingTollbar
属性。
appBarLayout.addOnOffsetChangedListener { _, verticalOffSet ->
if (Math.abs(verticalOffSet) == appBarLayout.totalScrollRange) {
//Collapsed
toolBar.setBackgroundDrawable(ContextCompat.getDrawable(this,
R.drawable.last_revolut_gradient))
} else {
//Expanded
toolBar.setBackgroundColor(ContextCompat.getColor(this,
android.R.color.transparent))
}
}
也许您一直在寻找的是这个:
myCollapsingToolbar.setContentScrimColor(getResources().getColor(R.color.my_color_id));
它对我有用,并且在折叠工具栏折叠后更改了它的颜色,以帮助我适合在折叠工具栏全尺寸显示时显示的图像的主要颜色。有了这个,颜色显然可以通过编程来改变!
我知道我来晚了,但我希望它能帮到你。