From 79e8c5c55a245d2fdc83e5c1a106401dd8f24b7c Mon Sep 17 00:00:00 2001 From: liyuhao Date: Thu, 7 Mar 2024 17:05:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9RecyclerView=E5=92=8CStateVie?= =?UTF-8?q?w=E5=B9=B6=E4=B8=8D=E6=92=91=E6=BB=A1Layout=E7=A9=BA=E9=97=B4?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5=EF=BC=8C=E5=B9=B6=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=B1=85=E4=B8=AD=E6=98=BE=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adapter4/viewholder/StateLayoutVH.kt | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/library/src/main/java/com/chad/library/adapter4/viewholder/StateLayoutVH.kt b/library/src/main/java/com/chad/library/adapter4/viewholder/StateLayoutVH.kt index baa66f31..276b2584 100644 --- a/library/src/main/java/com/chad/library/adapter4/viewholder/StateLayoutVH.kt +++ b/library/src/main/java/com/chad/library/adapter4/viewholder/StateLayoutVH.kt @@ -57,6 +57,31 @@ internal class StateLayoutVH( ).apply { gravity = Gravity.CENTER } + rootView.layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT + rootView.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT + }else{ + if ( + stateView.layoutParams is FrameLayout.LayoutParams + && ((stateView.layoutParams as FrameLayout.LayoutParams).gravity == Gravity.CENTER) + && stateView.layoutParams.width == FrameLayout.LayoutParams.WRAP_CONTENT + && stateView.layoutParams.height == FrameLayout.LayoutParams.WRAP_CONTENT){ + //兼容stateview.layoutParams原本为空,设置FrameLayout.LayoutParams并居中的情况 + rootView.layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT + rootView.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT + }else{ + //判断stateView宽度,如果不是MATCH_PARENT则把RootView的高度改为WRAP_CONTENT + if (stateView.layoutParams.width == ViewGroup.LayoutParams.MATCH_PARENT){ + rootView.layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT + }else{ + rootView.layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT + } + //判断stateView高度,如果不是MATCH_PARENT则把RootView的高度改为WRAP_CONTENT + if (stateView.layoutParams.height == ViewGroup.LayoutParams.MATCH_PARENT){ + rootView.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT + }else{ + rootView.layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT + } + } } rootView.removeAllViews()