修复最新MIUI内测居中布局通知异常

This commit is contained in:
LittleTurtle2333
2022-03-27 03:08:22 +08:00
parent 62561d4c34
commit 8309c9a69a

View File

@@ -10,6 +10,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import com.lt2333.simplicitytools.util.XSPUtils import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.findClass import com.lt2333.simplicitytools.util.findClass
@@ -53,26 +54,26 @@ object StatusBarLayout: HookRegister() {
val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui") val clockId: Int = res.getIdentifier("clock", "id", "com.android.systemui")
val phoneStatusBarLeftContainerId: Int = val phoneStatusBarLeftContainerId: Int =
res.getIdentifier("phone_status_bar_left_container", "id", "com.android.systemui") res.getIdentifier("phone_status_bar_left_container", "id", "com.android.systemui")
val fullscreenNotificationIconAreaId: Int = val notificationIconAreaInnerId: Int =
res.getIdentifier("fullscreen_notification_icon_area", "id", "com.android.systemui") res.getIdentifier("notification_icon_area_inner", "id", "com.android.systemui")
statusBar = MiuiPhoneStatusBarView.findViewById(statusBarId) statusBar = MiuiPhoneStatusBarView.findViewById(statusBarId)
val statusBarContents: ViewGroup = val statusBarContents: ViewGroup =
MiuiPhoneStatusBarView.findViewById(statusBarContentsId) MiuiPhoneStatusBarView.findViewById(statusBarContentsId)
if (statusBar == null) return@hookAfterMethod if (statusBar == null) return@hookAfterMethod
val Clock: View = MiuiPhoneStatusBarView.findViewById(clockId) val clock: TextView = MiuiPhoneStatusBarView.findViewById(clockId)
val phoneStatusBarLeftContainer: ViewGroup = val phoneStatusBarLeftContainer: ViewGroup =
MiuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId) MiuiPhoneStatusBarView.findViewById(phoneStatusBarLeftContainerId)
val fullscreenNotificationIconArea: ViewGroup = val notificationIconAreaInner: ViewGroup =
MiuiPhoneStatusBarView.findViewById(fullscreenNotificationIconAreaId) MiuiPhoneStatusBarView.findViewById(notificationIconAreaInnerId)
val systemIconArea: ViewGroup = val systemIconArea: ViewGroup =
MiuiPhoneStatusBarView.findViewById(systemIconAreaId) MiuiPhoneStatusBarView.findViewById(systemIconAreaId)
(Clock.parent as ViewGroup).removeView(Clock) (clock.parent as ViewGroup).removeView(clock)
(phoneStatusBarLeftContainer.parent as ViewGroup).removeView( (phoneStatusBarLeftContainer.parent as ViewGroup).removeView(
phoneStatusBarLeftContainer phoneStatusBarLeftContainer
) )
(fullscreenNotificationIconArea.parent as ViewGroup).removeView( (notificationIconAreaInner.parent as ViewGroup).removeView(
fullscreenNotificationIconArea notificationIconAreaInner
) )
(systemIconArea.parent as ViewGroup).removeView(systemIconArea) (systemIconArea.parent as ViewGroup).removeView(systemIconArea)
@@ -84,14 +85,14 @@ object StatusBarLayout: HookRegister() {
val mConstraintLayout = val mConstraintLayout =
ConstraintLayout(context).also { it.layoutParams = mConstraintLayoutLp } ConstraintLayout(context).also { it.layoutParams = mConstraintLayoutLp }
mConstraintLayout.addView(fullscreenNotificationIconArea) mConstraintLayout.addView(notificationIconAreaInner)
val fullscreen_notification_icon_area_lp = FrameLayout.LayoutParams( val fullscreen_notification_icon_area_lp = LinearLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT ConstraintLayout.LayoutParams.MATCH_PARENT
) )
fullscreenNotificationIconArea.layoutParams = fullscreen_notification_icon_area_lp notificationIconAreaInner.layoutParams = fullscreen_notification_icon_area_lp
//增加一个左对齐布局 //增加一个左对齐布局
mLeftLayout = LinearLayout(context) mLeftLayout = LinearLayout(context)
@@ -116,7 +117,7 @@ object StatusBarLayout: HookRegister() {
mLeftLayout!!.addView(phoneStatusBarLeftContainer) mLeftLayout!!.addView(phoneStatusBarLeftContainer)
mLeftLayout!!.addView(mConstraintLayout) mLeftLayout!!.addView(mConstraintLayout)
mCenterLayout!!.addView(Clock) mCenterLayout!!.addView(clock)
mRightLayout!!.addView(systemIconArea) mRightLayout!!.addView(systemIconArea)
statusBarContents.addView(mLeftLayout, 0) statusBarContents.addView(mLeftLayout, 0)
statusBarContents.addView(mCenterLayout) statusBarContents.addView(mCenterLayout)
@@ -152,6 +153,17 @@ object StatusBarLayout: HookRegister() {
updateLayout(context) updateLayout(context)
} }
} }
val miuiPhoneStatusBarViewClass =
"com.android.systemui.statusbar.phone.MiuiPhoneStatusBarView".findClass(getDefaultClassLoader())
miuiPhoneStatusBarViewClass.hookAfterMethod("updateNotificationIconAreaInnnerParent") {
val viewGroup = it.thisObject as ViewGroup
val fullscreen_notification_icon_area_lp = FrameLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_PARENT,
ConstraintLayout.LayoutParams.MATCH_PARENT
)
viewGroup.layoutParams = fullscreen_notification_icon_area_lp
}
} }