Fix layout to handle long carrier text

The problem here is the same as in ag/20877927. But here the clock is scaled so it's actual width stays the same, so I'm applying custom padding to compensate this.

Fixes: 263851901
Test: auto + manual
Change-Id: I606e18cd36998e88289fbc2010186d3e5ae61787
This commit is contained in:
Anton Potapov
2023-01-11 15:05:16 +00:00
parent a62cc29cce
commit c388ea1259
4 changed files with 21 additions and 12 deletions

View File

@@ -41,9 +41,6 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/privacy_container"
app:layout_constraintBottom_toBottomOf="@id/carrier_group"
app:layout_constraintEnd_toStartOf="@id/carrier_group"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintHorizontal_chainStyle="spread_inside"
/>
<Transform
android:scaleX="2.57"
@@ -62,18 +59,18 @@
/>
</Constraint>
<!-- LargeScreenShadeHeaderController helps with managing clock width to layout this view -->
<Constraint
android:id="@+id/carrier_group">
<Layout
app:layout_constraintWidth_min="48dp"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="@dimen/large_screen_shade_header_min_height"
app:layout_constraintStart_toEndOf="@id/clock"
app:layout_constraintWidth_min="48dp"
app:layout_constraintWidth_default="wrap"
app:layout_constraintStart_toStartOf="@id/clock"
app:layout_constraintTop_toBottomOf="@id/privacy_container"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintBottom_toTopOf="@id/batteryRemainingIcon"
app:layout_constraintHorizontal_chainStyle="spread_inside"
/>
<PropertySet
android:alpha="1"

View File

@@ -45,7 +45,6 @@ import com.android.systemui.qs.HeaderPrivacyIconsController
import com.android.systemui.qs.carrier.QSCarrierGroup
import com.android.systemui.qs.carrier.QSCarrierGroupController
import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.HEADER_TRANSITION_ID
import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.LARGE_SCREEN_HEADER_CONSTRAINT
import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.QQS_HEADER_CONSTRAINT
import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.QS_HEADER_CONSTRAINT
import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider
@@ -305,6 +304,8 @@ class LargeScreenShadeHeaderController @Inject constructor(
val newPivot = if (v.isLayoutRtl) v.width.toFloat() else 0f
v.pivotX = newPivot
v.pivotY = v.height.toFloat() / 2
qsCarrierGroup.setPaddingRelative((v.width * v.scaleX).toInt(), 0, 0, 0)
}
}

View File

@@ -90,7 +90,7 @@ class CombinedShadeHeaderConstraintsTest : SysuiTestCase() {
fun testEdgeElementsAlignedWithEdgeOrGuide_qs() {
with(qsConstraint) {
assertThat(getConstraint(R.id.clock).layout.startToStart).isEqualTo(PARENT_ID)
assertThat(getConstraint(R.id.clock).layout.horizontalBias).isEqualTo(0f)
assertThat(getConstraint(R.id.clock).layout.horizontalBias).isEqualTo(0.5f)
assertThat(getConstraint(R.id.date).layout.startToStart).isEqualTo(PARENT_ID)
assertThat(getConstraint(R.id.date).layout.horizontalBias).isEqualTo(0.5f)
@@ -342,7 +342,6 @@ class CombinedShadeHeaderConstraintsTest : SysuiTestCase() {
R.id.clock to "clock",
R.id.date to "date",
R.id.privacy_container to "privacy",
R.id.carrier_group to "carriers",
)
views.forEach { (id, name) ->
assertWithMessage("$name has 0 height in qqs")
@@ -361,7 +360,6 @@ class CombinedShadeHeaderConstraintsTest : SysuiTestCase() {
val views = mapOf(
R.id.clock to "clock",
R.id.privacy_container to "privacy",
R.id.carrier_group to "carriers",
)
views.forEach { (id, name) ->
expect.withMessage("$name changes height")

View File

@@ -692,6 +692,19 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() {
assertThat(captor.value.getResId()).isEqualTo(R.xml.large_screen_shade_header)
}
@Test
fun `carrier left padding is set when clock layout changes`() {
val width = 200
whenever(clock.width).thenReturn(width)
whenever(clock.scaleX).thenReturn(2.57f) // 2.57 comes from qs_header.xml
val captor = ArgumentCaptor.forClass(View.OnLayoutChangeListener::class.java)
verify(clock).addOnLayoutChangeListener(capture(captor))
captor.value.onLayoutChange(clock, 0, 0, width, 0, 0, 0, 0, 0)
verify(carrierGroup).setPaddingRelative(514, 0, 0, 0)
}
private fun View.executeLayoutChange(
left: Int,
top: Int,