feat(popup): Redesign connection popup with Apple-inspired layout

Large centered device graphics (64dp), vertically stacked battery info,
adaptive width, rounded card with tonal close button.
This commit is contained in:
darken
2026-02-21 19:10:56 +01:00
committed by Matthias Urhahn
parent 9785b5ea7f
commit 8405406d22
6 changed files with 233 additions and 204 deletions
@@ -5,7 +5,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.view.ContextThemeWrapper import androidx.appcompat.view.ContextThemeWrapper
import androidx.core.view.isInvisible import androidx.core.view.isGone
import androidx.core.view.isVisible import androidx.core.view.isVisible
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import eu.darken.capod.R import eu.darken.capod.R
@@ -39,10 +39,9 @@ class PopUpPodViewFactory @Inject constructor(
private fun createDualPods(parent: ViewGroup, device: DualPodDevice): View = private fun createDualPods(parent: ViewGroup, device: DualPodDevice): View =
PopupNotificationDualPodsBinding.inflate(layoutInflater, parent, false).apply { PopupNotificationDualPodsBinding.inflate(layoutInflater, parent, false).apply {
podIcon.setImageResource(device.iconRes)
podLabel.text = device.getLabel(context) podLabel.text = device.getLabel(context)
signal.text = device.getSignalQuality(context) signal.text = device.getSignalQuality(context)
signal.isInvisible = debugSettings.isDebugModeEnabled.value signal.isGone = debugSettings.isDebugModeEnabled.value
// Left // Left
val leftPercent = device.batteryLeftPodPercent val leftPercent = device.batteryLeftPodPercent
@@ -71,7 +70,7 @@ class PopUpPodViewFactory @Inject constructor(
headphonesIcon.setImageResource(device.iconRes) headphonesIcon.setImageResource(device.iconRes)
headphonesLabel.text = device.getLabel(context) headphonesLabel.text = device.getLabel(context)
signal.text = device.getSignalQuality(context) signal.text = device.getSignalQuality(context)
signal.isInvisible = debugSettings.isDebugModeEnabled.value signal.isGone = debugSettings.isDebugModeEnabled.value
val headsetPercent = device.batteryHeadsetPercent val headsetPercent = device.batteryHeadsetPercent
headphonesBatteryIcon.setImageResource(getBatteryDrawable(headsetPercent)) headphonesBatteryIcon.setImageResource(getBatteryDrawable(headsetPercent))
@@ -32,13 +32,15 @@ class PopUpWindow @Inject constructor(
private val windowManager = context.getSystemService(WINDOW_SERVICE) as WindowManager private val windowManager = context.getSystemService(WINDOW_SERVICE) as WindowManager
private val layoutParams = WindowManager.LayoutParams( private val layoutParams = WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT, // Display it on top of other application windows WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, // Don't let it grab the input focus WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // Make the underlying application window visible WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT PixelFormat.TRANSLUCENT
).apply { ).apply {
gravity = Gravity.BOTTOM gravity = Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL
val dm = appContext.resources.displayMetrics
val margin = (24 * dm.density).toInt()
width = minOf(dm.widthPixels - margin * 2, (400 * dm.density).toInt())
} }
private val popUpView: View = layoutInflater.inflate(R.layout.popup_window_container_layout, null).apply { private val popUpView: View = layoutInflater.inflate(R.layout.popup_window_container_layout, null).apply {
findViewById<View>(R.id.close_action).setOnClickListener { close() } findViewById<View>(R.id.close_action).setOnClickListener { close() }
@@ -5,171 +5,184 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView
android:id="@+id/pod_icon"
style="@style/PodInfoItemIcon.Popup"
android:src="@drawable/devic_earbuds_generic_both"
app:layout_constraintBottom_toBottomOf="@id/pod_label"
app:layout_constraintEnd_toStartOf="@id/pod_label"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/pod_label" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/pod_label" android:id="@+id/pod_label"
style="@style/TextAppearance.Material3.BodyLarge" style="@style/TextAppearance.Material3.TitleLarge"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:ellipsize="end"
android:layout_marginHorizontal="8dp" android:gravity="center"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
app:layout_constraintEnd_toStartOf="@id/signal" android:maxLines="1"
app:layout_constraintStart_toEndOf="@id/pod_icon" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="AirPods Pro" /> tools:text="AirPods Pro" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/signal" android:id="@+id/signal"
style="@style/TextAppearance.Material3.TitleSmall" style="@style/TextAppearance.Material3.LabelMedium"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_baseline_signal_cellular_alt_24"
android:gravity="center" android:gravity="center"
android:minWidth="44dp" app:layout_constraintEnd_toStartOf="@+id/signal_icon"
app:layout_constraintBottom_toBottomOf="@+id/pod_label" app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/pod_label"
tools:text="-90%" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@id/pod_left_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toStartOf="@id/pod_case_container"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/pod_label"> app:layout_constraintTop_toBottomOf="@id/pod_label"
tools:text="29%" />
<ImageView <ImageView
android:id="@+id/pod_left_icon" android:id="@+id/signal_icon"
style="@style/PodInfoItemIcon.Popup" android:layout_width="14dp"
android:layout_gravity="center" android:layout_height="14dp"
android:src="@drawable/devic_airpods_gen1_left" android:layout_marginStart="3dp"
app:layout_constraintBottom_toBottomOf="@id/pod_left_battery_label" android:src="@drawable/ic_baseline_signal_cellular_alt_24"
app:layout_constraintEnd_toStartOf="@id/pod_left_battery_icon" app:layout_constraintBottom_toBottomOf="@id/signal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/pod_left_battery_label" />
<ImageView
android:id="@id/pod_left_battery_icon"
style="@style/PodInfoItemIcon.Popup"
android:src="@drawable/ic_baseline_battery_unknown_24"
app:layout_constraintBottom_toBottomOf="@id/pod_left_battery_label"
app:layout_constraintEnd_toStartOf="@id/pod_left_battery_label"
app:layout_constraintStart_toEndOf="@id/pod_left_icon"
app:layout_constraintTop_toTopOf="@id/pod_left_battery_label" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/pod_left_battery_label"
style="@style/TextAppearance.Material3.BodyLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/pod_left_battery_icon"
app:layout_constraintTop_toTopOf="parent"
tools:text="100%" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pod_case_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toStartOf="@id/pod_right_container"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toEndOf="@id/pod_left_container"
app:layout_constraintTop_toBottomOf="@id/pod_label">
<ImageView
android:id="@+id/pod_case_icon"
style="@style/PodInfoItemIcon.Popup"
android:layout_gravity="center"
android:src="@drawable/devic_airpods_gen1_case"
app:layout_constraintBottom_toBottomOf="@id/pod_case_battery_label"
app:layout_constraintEnd_toStartOf="@id/pod_case_battery_icon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/pod_case_battery_label" />
<ImageView
android:id="@id/pod_case_battery_icon"
style="@style/PodInfoItemIcon.Popup"
android:src="@drawable/ic_baseline_battery_unknown_24"
app:layout_constraintBottom_toBottomOf="@id/pod_case_battery_label"
app:layout_constraintEnd_toStartOf="@id/pod_case_battery_label"
app:layout_constraintStart_toEndOf="@id/pod_case_icon"
app:layout_constraintTop_toTopOf="@id/pod_case_battery_label" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/pod_case_battery_label"
style="@style/TextAppearance.Material3.BodyLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/pod_case_battery_icon"
app:layout_constraintTop_toTopOf="parent"
tools:text="100%" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@id/pod_right_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="spread" app:layout_constraintStart_toEndOf="@id/signal"
app:layout_constraintStart_toEndOf="@id/pod_case_container" app:layout_constraintTop_toTopOf="@id/signal" />
app:layout_constraintTop_toBottomOf="@id/pod_label">
<ImageView <!-- Pod columns container with LTR direction to prevent RTL mirroring physical L/R -->
android:id="@+id/pod_right_icon" <androidx.constraintlayout.widget.ConstraintLayout
style="@style/PodInfoItemIcon.Popup" android:id="@+id/pods_columns_container"
android:layout_gravity="center" android:layout_width="match_parent"
android:src="@drawable/devic_airpods_gen1_right" android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@id/pod_right_battery_label" android:layout_marginTop="16dp"
app:layout_constraintEnd_toStartOf="@id/pod_right_battery_icon" android:layoutDirection="ltr"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/pod_right_battery_label" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/signal">
<ImageView <!-- LEFT POD column -->
android:id="@id/pod_right_battery_icon" <androidx.constraintlayout.widget.ConstraintLayout
style="@style/PodInfoItemIcon.Popup" android:id="@+id/pod_left_container"
android:src="@drawable/ic_baseline_battery_unknown_24" android:layout_width="0dp"
app:layout_constraintBottom_toBottomOf="@id/pod_right_battery_label" android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@id/pod_right_battery_label" app:layout_constraintEnd_toStartOf="@+id/pod_case_container"
app:layout_constraintStart_toEndOf="@id/pod_right_icon" app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintTop_toTopOf="@id/pod_right_battery_label" /> app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/pod_right_battery_label" <ImageView
style="@style/TextAppearance.Material3.BodyLarge" android:id="@+id/pod_left_icon"
android:layout_width="wrap_content" style="@style/PodInfoItemIcon.Popup.Large"
android:src="@drawable/devic_airpods_gen1_left"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/pod_left_battery_icon"
style="@style/PodInfoItemIcon.Popup"
android:layout_marginTop="8dp"
android:src="@drawable/ic_baseline_battery_unknown_24"
app:layout_constraintEnd_toStartOf="@id/pod_left_battery_label"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/pod_left_icon" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/pod_left_battery_label"
style="@style/TextAppearance.Material3.BodyMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:ellipsize="end"
android:maxLines="1"
app:layout_constraintBottom_toBottomOf="@id/pod_left_battery_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/pod_left_battery_icon"
app:layout_constraintTop_toTopOf="@id/pod_left_battery_icon"
tools:text="100%" />
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- CASE column -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pod_case_container"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@+id/pod_right_container"
app:layout_constraintStart_toEndOf="@id/pod_left_container"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/pod_case_icon"
style="@style/PodInfoItemIcon.Popup.Large"
android:src="@drawable/devic_airpods_gen1_case"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/pod_case_battery_icon"
style="@style/PodInfoItemIcon.Popup"
android:layout_marginTop="8dp"
android:src="@drawable/ic_baseline_battery_unknown_24"
app:layout_constraintEnd_toStartOf="@id/pod_case_battery_label"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/pod_case_icon" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/pod_case_battery_label"
style="@style/TextAppearance.Material3.BodyMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:ellipsize="end"
android:maxLines="1"
app:layout_constraintBottom_toBottomOf="@id/pod_case_battery_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/pod_case_battery_icon"
app:layout_constraintTop_toTopOf="@id/pod_case_battery_icon"
tools:text="100%" />
</androidx.constraintlayout.widget.ConstraintLayout>
<!-- RIGHT POD column -->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pod_right_container"
android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/pod_right_battery_icon" app:layout_constraintStart_toEndOf="@id/pod_case_container"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent">
tools:text="100%" />
<ImageView
android:id="@+id/pod_right_icon"
style="@style/PodInfoItemIcon.Popup.Large"
android:src="@drawable/devic_airpods_gen1_right"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/pod_right_battery_icon"
style="@style/PodInfoItemIcon.Popup"
android:layout_marginTop="8dp"
android:src="@drawable/ic_baseline_battery_unknown_24"
app:layout_constraintEnd_toStartOf="@id/pod_right_battery_label"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/pod_right_icon" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/pod_right_battery_label"
style="@style/TextAppearance.Material3.BodyMedium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:ellipsize="end"
android:maxLines="1"
app:layout_constraintBottom_toBottomOf="@id/pod_right_battery_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/pod_right_battery_icon"
app:layout_constraintTop_toTopOf="@id/pod_right_battery_icon"
tools:text="100%" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -5,75 +5,84 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView
android:id="@+id/headphones_icon"
style="@style/PodInfoItemIcon.Popup"
android:src="@drawable/devic_earbuds_generic_both"
app:layout_constraintBottom_toBottomOf="@id/headphones_label"
app:layout_constraintEnd_toStartOf="@id/headphones_label"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/headphones_label" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/headphones_label" android:id="@+id/headphones_label"
style="@style/TextAppearance.Material3.BodyLarge" style="@style/TextAppearance.Material3.TitleLarge"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:ellipsize="end"
android:layout_marginHorizontal="8dp" android:gravity="center"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
app:layout_constraintEnd_toStartOf="@id/signal" android:maxLines="1"
app:layout_constraintStart_toEndOf="@id/headphones_icon" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="AirPods Max" /> tools:text="AirPods Max" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/signal" android:id="@+id/signal"
style="@style/TextAppearance.Material3.TitleSmall" style="@style/TextAppearance.Material3.LabelMedium"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_baseline_signal_cellular_alt_24"
android:gravity="center" android:gravity="center"
android:minWidth="44dp" app:layout_constraintEnd_toStartOf="@+id/signal_icon"
app:layout_constraintBottom_toBottomOf="@+id/headphones_label" app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/headphones_label"
tools:text="29%" />
<ImageView
android:id="@+id/signal_icon"
android:layout_width="14dp"
android:layout_height="14dp"
android:layout_marginStart="3dp"
android:src="@drawable/ic_baseline_signal_cellular_alt_24"
app:layout_constraintBottom_toBottomOf="@id/signal"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/headphones_label" app:layout_constraintStart_toEndOf="@id/signal"
tools:text="-90%" /> app:layout_constraintTop_toTopOf="@id/signal" />
<ImageView
android:id="@+id/headphones_icon"
style="@style/PodInfoItemIcon.Popup.Large"
android:layout_marginTop="16dp"
android:src="@drawable/devic_earbuds_generic_both"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/signal" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/headphones_container" android:id="@+id/headphones_container"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp" android:layout_marginTop="8dp"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/headphones_label"> app:layout_constraintTop_toBottomOf="@id/headphones_icon">
<ImageView <ImageView
android:id="@id/headphones_battery_icon" android:id="@+id/headphones_battery_icon"
style="@style/PodInfoItemIcon.Popup" style="@style/PodInfoItemIcon.Popup"
android:src="@drawable/ic_baseline_battery_unknown_24" android:src="@drawable/ic_baseline_battery_unknown_24"
app:layout_constraintBottom_toBottomOf="@id/headphones_battery_label"
app:layout_constraintEnd_toStartOf="@id/headphones_battery_label" app:layout_constraintEnd_toStartOf="@id/headphones_battery_label"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/headphones_battery_label" /> app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/headphones_battery_label" android:id="@+id/headphones_battery_label"
style="@style/TextAppearance.Material3.BodyLarge" style="@style/TextAppearance.Material3.BodyMedium"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp" android:layout_marginStart="2dp"
app:layout_constraintBottom_toBottomOf="parent" android:ellipsize="end"
android:maxLines="1"
app:layout_constraintBottom_toBottomOf="@id/headphones_battery_icon"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/headphones_battery_icon" app:layout_constraintStart_toEndOf="@id/headphones_battery_icon"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="@id/headphones_battery_icon"
tools:text="100%" /> tools:text="100%" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -1,37 +1,38 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android" <com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
app:cardCornerRadius="24dp"
app:cardElevation="8dp">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:minWidth="320dp" android:paddingHorizontal="20dp"
android:minHeight="96dp" android:paddingTop="20dp"
android:layout_margin="8dp"> android:paddingBottom="16dp">
<FrameLayout <FrameLayout
android:id="@+id/popup_content" android:id="@+id/popup_content"
android:layout_width="match_parent" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/close_action" app:layout_constraintBottom_toTopOf="@id/close_action"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintVertical_bias="1.0" />
<com.google.android.material.button.MaterialButton <com.google.android.material.button.MaterialButton
android:id="@+id/close_action" android:id="@+id/close_action"
style="@style/Widget.Material3.Button.TextButton" style="@style/Widget.Material3.Button.TonalButton"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/general_close_action" android:text="@string/general_close_action"
app:cornerRadius="24dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="16dp"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/popup_content" /> app:layout_constraintTop_toBottomOf="@id/popup_content" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>
+5
View File
@@ -48,6 +48,11 @@
<item name="android:layout_width">24dp</item> <item name="android:layout_width">24dp</item>
</style> </style>
<style name="PodInfoItemIcon.Popup.Large">
<item name="android:layout_height">64dp</item>
<item name="android:layout_width">64dp</item>
</style>
<style name="PodInfoItemText" parent="TextAppearance.Material3.BodyMedium"> <style name="PodInfoItemText" parent="TextAppearance.Material3.BodyMedium">
<item name="android:singleLine">true</item> <item name="android:singleLine">true</item>
<item name="android:ellipsize">end</item> <item name="android:ellipsize">end</item>