فهرست منبع

Bottom sheets corner radius should only apply at the top. Resolves #1941.

Aidan Follestad 5 سال پیش
والد
کامیت
e4232fd44e

+ 6 - 1
bottomsheets/src/main/java/com/afollestad/materialdialogs/bottomsheets/BottomSheet.kt

@@ -186,7 +186,12 @@ class BottomSheet(
     cornerRadius: Float
   ) {
     bottomSheetView.background = GradientDrawable().apply {
-      this.cornerRadius = cornerRadius
+      this.cornerRadii = floatArrayOf(
+          cornerRadius, cornerRadius, // top left
+          cornerRadius, cornerRadius, // top right
+          0f, 0f, // bottom left
+          0f, 0f // bottom right
+      )
       setColor(color)
     }
     buttonsLayout.setBackgroundColor(color)

+ 6 - 0
core/src/main/java/com/afollestad/materialdialogs/DialogBehavior.kt

@@ -144,6 +144,12 @@ object ModalDialog : DialogBehavior {
     @ColorInt color: Int,
     cornerRadius: Float
   ) {
+    view.cornerRadii = floatArrayOf(
+        cornerRadius, cornerRadius, // top left
+        cornerRadius, cornerRadius, // top right
+        0f, 0f, // bottom left
+        0f, 0f // bottom right
+    )
     view.background = GradientDrawable().apply {
       this.cornerRadius = cornerRadius
       setColor(color)

+ 0 - 1
core/src/main/java/com/afollestad/materialdialogs/MaterialDialog.kt

@@ -449,7 +449,6 @@ class MaterialDialog(
       cornerRadius ?: resolveDimen(windowContext, attr = R.attr.md_corner_radius) {
         context.resources.getDimension(R.dimen.md_dialog_default_corner_radius)
       }
-    view.cornerRadius = cornerRadius
     dialogBehavior.setBackgroundColor(
         view = view,
         color = backgroundColor,

+ 4 - 4
core/src/main/java/com/afollestad/materialdialogs/internal/main/DialogLayout.kt

@@ -67,7 +67,7 @@ class DialogLayout(
       field = value
       setWillNotDraw(!value)
     }
-  var cornerRadius: Float = 0f
+  var cornerRadii: FloatArray = floatArrayOf()
     set(value) {
       field = value
       if (!cornerRadiusPath.isEmpty) {
@@ -164,14 +164,14 @@ class DialogLayout(
       setMeasuredDimension(specWidth, windowHeight)
     }
 
-    if (cornerRadius > 0f) {
+    if (cornerRadii.isNotEmpty()) {
       cornerRadiusRect.apply {
         left = 0f
         top = 0f
         right = measuredWidth.toFloat()
         bottom = measuredHeight.toFloat()
       }
-      cornerRadiusPath.addRoundRect(cornerRadiusRect, cornerRadius, cornerRadius, CW)
+      cornerRadiusPath.addRoundRect(cornerRadiusRect, cornerRadii, CW)
     }
   }
 
@@ -309,7 +309,7 @@ class DialogLayout(
   }
 
   override fun dispatchDraw(canvas: Canvas) {
-    if (cornerRadius > 0f) {
+    if (cornerRadii.isNotEmpty()) {
       canvas.clipPath(cornerRadiusPath)
     }
     super.dispatchDraw(canvas)