Commit 39714f81 authored by yinjiacheng's avatar yinjiacheng

update 通用TopBar支持自定义状态栏颜色

parent cd1a4149
package com.yidian.bcommon.widget package com.yidian.bcommon.widget
import android.app.Activity
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import android.view.View import android.view.View
import android.view.ViewTreeObserver
import android.view.WindowManager
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.isVisible import androidx.core.view.isVisible
...@@ -20,7 +23,7 @@ class CommonTopBarView @JvmOverloads constructor( ...@@ -20,7 +23,7 @@ class CommonTopBarView @JvmOverloads constructor(
context: Context, context: Context,
attrs: AttributeSet? = null, attrs: AttributeSet? = null,
defStyle: Int = 0 defStyle: Int = 0
) : ConstraintLayout(context, attrs, defStyle), View.OnClickListener { ) : ConstraintLayout(context, attrs, defStyle), View.OnClickListener, ViewTreeObserver.OnGlobalLayoutListener {
private val viewBinding by lazy { private val viewBinding by lazy {
ViewCommonTopBarBinding.bind( ViewCommonTopBarBinding.bind(
...@@ -42,6 +45,11 @@ class CommonTopBarView @JvmOverloads constructor( ...@@ -42,6 +45,11 @@ class CommonTopBarView @JvmOverloads constructor(
*/ */
private var actionCallback: OnCommonTopBarActionCallback? = null private var actionCallback: OnCommonTopBarActionCallback? = null
/**
* StatusBar颜色
*/
private var statusBarColor: Int = 0
init { init {
val typeArray = context.obtainStyledAttributes(attrs, R.styleable.CommonTopBarView) val typeArray = context.obtainStyledAttributes(attrs, R.styleable.CommonTopBarView)
// 设置标题文字 // 设置标题文字
...@@ -73,12 +81,18 @@ class CommonTopBarView @JvmOverloads constructor( ...@@ -73,12 +81,18 @@ class CommonTopBarView @JvmOverloads constructor(
) )
// 设置横向内边距 // 设置横向内边距
val horizontalPadding = val horizontalPadding =
typeArray.getDimensionPixelOffset(R.styleable.CommonTopBarView_CommonTopBarView_padding_horizontal, DensityUtil.dp2px(20F)) typeArray.getDimensionPixelOffset(R.styleable.CommonTopBarView_CommonTopBarView_horizontal_padding, DensityUtil.dp2px(20F))
setPadding(horizontalPadding, 0, horizontalPadding, 0) setPadding(horizontalPadding, 0, horizontalPadding, 0)
// 暂存StatusBar背景色
statusBarColor = typeArray.getColor(
R.styleable.CommonTopBarView_CommonTopBarView_statusBar_color,
ContextCompat.getColor(context, R.color.transparent)
)
typeArray.recycle() typeArray.recycle()
viewBinding.ivBack.setOnClickListener(this) viewBinding.ivBack.setOnClickListener(this)
viewBinding.tvAction.setOnClickListener(this) viewBinding.tvAction.setOnClickListener(this)
viewTreeObserver.addOnGlobalLayoutListener(this)
} }
/** /**
...@@ -141,7 +155,15 @@ class CommonTopBarView @JvmOverloads constructor( ...@@ -141,7 +155,15 @@ class CommonTopBarView @JvmOverloads constructor(
* 返回按钮回调 * 返回按钮回调
*/ */
fun onDoBack() fun onDoBack()
}
override fun onGlobalLayout() {
// 设置StatusBar背景色
if (statusBarColor != 0) {
(context as Activity).window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
(context as Activity).window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
(context as Activity).window.statusBarColor = statusBarColor
}
viewTreeObserver.removeOnGlobalLayoutListener(this)
} }
} }
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
android:id="@+id/iv_back" android:id="@+id/iv_back"
android:layout_width="@dimen/dp28" android:layout_width="@dimen/dp28"
android:layout_height="@dimen/dp28" android:layout_height="@dimen/dp28"
android:src="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
...@@ -18,7 +17,6 @@ ...@@ -18,7 +17,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:includeFontPadding="false" android:includeFontPadding="false"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp18" android:textSize="@dimen/sp18"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
......
...@@ -12,7 +12,9 @@ ...@@ -12,7 +12,9 @@
<!--返回按钮图标--> <!--返回按钮图标-->
<attr name="CommonTopBarView_back_img" format="reference" /> <attr name="CommonTopBarView_back_img" format="reference" />
<!--横向内边距--> <!--横向内边距-->
<attr name="CommonTopBarView_padding_horizontal" format="dimension" /> <attr name="CommonTopBarView_horizontal_padding" format="dimension" />
<!--状态栏颜色-->
<attr name="CommonTopBarView_statusBar_color" format="color" />
</declare-styleable> </declare-styleable>
<declare-styleable name="CommonEmptyPageView"> <declare-styleable name="CommonEmptyPageView">
<attr name="CommonEmptyPageView_place_holder_img" format="reference" /> <attr name="CommonEmptyPageView_place_holder_img" format="reference" />
......
...@@ -20,9 +20,10 @@ ...@@ -20,9 +20,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:CommonTopBarView_back_img="@drawable/icon_back_white" app:CommonTopBarView_back_img="@drawable/icon_back_white"
app:CommonTopBarView_bg_color="@color/color_FD7823" app:CommonTopBarView_bg_color="@color/color_FD7823"
app:CommonTopBarView_horizontal_padding="@dimen/dp10"
app:CommonTopBarView_statusBar_color="@color/color_FD7823"
app:CommonTopBarView_title_text="@string/order_detail" app:CommonTopBarView_title_text="@string/order_detail"
app:CommonTopBarView_title_text_color="@color/white" app:CommonTopBarView_title_text_color="@color/white"
app:CommonTopBarView_padding_horizontal="@dimen/dp10"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.scwang.smart.refresh.layout.SmartRefreshLayout <com.scwang.smart.refresh.layout.SmartRefreshLayout
......
...@@ -27,9 +27,10 @@ ...@@ -27,9 +27,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:CommonTopBarView_back_img="@drawable/icon_back_white" app:CommonTopBarView_back_img="@drawable/icon_back_white"
app:CommonTopBarView_bg_color="@color/color_FD7823" app:CommonTopBarView_bg_color="@color/color_FD7823"
app:CommonTopBarView_horizontal_padding="@dimen/dp10"
app:CommonTopBarView_statusBar_color="@color/color_FD7823"
app:CommonTopBarView_title_text="@string/select_pickup_point" app:CommonTopBarView_title_text="@string/select_pickup_point"
app:CommonTopBarView_title_text_color="@color/white" app:CommonTopBarView_title_text_color="@color/white"
app:CommonTopBarView_padding_horizontal="@dimen/dp10"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<com.yidian.shenghuoquan.border.ui.widget.PickupPointSearchView <com.yidian.shenghuoquan.border.ui.widget.PickupPointSearchView
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment