效果图:
xml代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapse_layout"
android:layout_width="match_parent"
android:layout_height="275dp"
android:fitsSystemWindows="true"
app:contentScrim="@color/transparent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_bg"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
android:src="@mipmap/bg_home"
app:layout_collapseMode="parallax" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="@drawable/shape_half_tranf"
android:layout_marginStart="12dp"
android:layout_marginTop="37dp"
android:layout_marginEnd="12dp"
android:layout_marginBottom="12dp">
<!-- drawable_radius="@{8}"
drawable_solidColor="@{0x88ffffff}"
drawable_strokeColor="@{0x33666666}"
drawable_strokeWidth="@{1}"-->
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_menu"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="12dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:onClick="@{()->click.openMenu()}"
android:scaleType="centerInside"
android:src="@drawable/ic_menu_black_48dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_icon"
onClickWithDebouncing="@{()->click.login()}"
android:layout_width="24dp"
android:layout_height="24dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:scaleType="centerInside"
android:src="@drawable/ic_music_note_black_48dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@+id/tv_app"
app:layout_constraintTop_toTopOf="parent" />
<!-- onClickWithDebouncing="@{()->click.login()}"-->
<TextView
android:id="@+id/tv_app"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_search"
onClickWithDebouncing="@{()->click.search()}"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="12dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:scaleType="centerInside"
android:src="@drawable/ic_search_black_48dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.CollapsingToolbarLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
initTabAndPage="@{vm.initTabAndPage}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabBackground="@color/white"
app:tabIndicatorColor="@color/gray"
app:tabIndicatorHeight="4dp"
app:tabSelectedTextColor="@color/gray"
app:tabTextColor="@color/light_gray">
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="最近播放" />
<com.google.android.material.tabs.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的收藏" />
</com.google.android.material.tabs.TabLayout>
</com.google.android.material.appbar.AppBarLayout>
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<!-- TODO 以下 adapter 和 sumbitList 属性皆乃 BindingAdapter 中定义的属性,
旨在将 ViewModel 中的数据绑定到 BindingAdapter,
以便可以间接通知布局中存在的视图实例,避免空指针安全问题,
如果这样说还不理解的话,可参考 DataBinding 篇的解析
https://xiaozhuanlan.com/topic/9816742350 -->
<!-- TODO 该 BindingAdapter 现已抽到 Strict-DataBinding 开源库中独立维护
可在本项目中搜索 RecyclerViewBindingAdapter 找到-->
<!-- app:layoutManager="com.kunminx.binding_recyclerview.layout_manager.WrapContentLinearLayoutManager"
tools:listitem="@layout/adapter_play_item"-->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
adapter="@{adapter}"
submitList="@{vm.list}"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
/>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- pageAssetPath="@{vm.pageAssetPath}"-->
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false" />
</androidx.core.widget.NestedScrollView>
</androidx.viewpager.widget.ViewPager>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
activity代码:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
BarUtils.setStatusBarLightMode(this, true)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
最后代码下载地址为:https://download.csdn.net/download/wy313622821/87099154
顶部透明状态栏也可以参考:
代码地址为:玩安卓-完美的MVMM框架(超级推荐使用),完全融汇贯通后你就是安卓大神,不开玩笑_androidToolbar默认高度-Android文档类资源-CSDN下载