Um die Seiten immer bleiben kurvige mit jeder Höhe zu machen, habe ich am Ende up muss die Form programmgesteuert wie folgt erstellen (Code in Kotlin)
class CurvedSidesShape : RectShape() {
override fun draw(canvas: Canvas, paint: Paint?) {
var path = Path()
path.addRoundRect(rect(), rect().height(), rect().height(), Path.Direction.CW)
canvas.drawPath(path, paint)
}
}
und hier ist, wie ich die Form als Schaltfläche Hintergrund verwenden
class CurvedSidesButton : Button {
private var mHeight: Int = 0
constructor(context: Context?) : super(context) {
init(context, null, 0, 0)
}
.
.
.
override fun draw(canvas: Canvas?) {
setCurvedSidesBackground(height)
super.draw(canvas)
}
private fun setCurvedSidesBackground(height: Int) {
if (height != mHeight) {
val curvedSidesShape = ShapeDrawable(CurvedSidesShape())
curvedSidesShape.intrinsicWidth = width
curvedSidesShape.intrinsicHeight = height
curvedSidesShape.paint.color = Color.RED
background = curvedSidesShape
mHeight = height
}
}
}
Ist das feste Höhe und Breite? –
@TedHopp nicht unbedingt –
Ich wäre versucht, mit einer Ebenenliste zu experimentieren, die drei Elemente hat: zwei Kreise links und rechts und ein Rechteck in der Mitte. Ich bin mir nicht sicher, wie ich es richtig skalieren kann. Lassen Sie mich auch die frühere Frage umformulieren: Ist das eine _bekannte_ Höhe? (Es könnte bekannt sein, aber nicht behoben, wenn beispielsweise die Höhe an eine Ressource gebunden war, die mit der Gerätekonfiguration variiert.) –