Ich kann eine Form erstellen, die ein Rechteck mit abgerundeten Kanten ist. Was ich jedoch will, ist eine Rechteckform, bei der nur 2 der Kanten abgerundet sind. Ist das möglich?
Ich hacke im Wesentlichen eine ListView zusammen, die wie eine Blase mit abgerundeten Kanten aussieht. Ich schaue, um eine Kopfzeile hinzuzufügen, die die zwei oberen Kanten abgerundet hat und eine Fußzeile mit den zwei unteren Kanten, die abgerundet sind.
Ich änderte das Android:radius
-Attribut in Android:topRightRadius
und Android:topLeftRadius
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" Android:padding="10dp">
<solid Android:color="#FFFFFF"/>
<corners
Android:bottomRightRadius="0dp"
Android:bottomLeftRadius="0dp"
Android:topLeftRadius="15dp"
Android:topRightRadius="15dp"/>
</shape>
Dieser Code funktioniert gerade (seit?) Android-Version 2.2. In Bezug auf die Dokumentation sollte der Code folgendermaßen aussehen:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" Android:padding="10dp">
<solid Android:color="#FFFFFF"/>
<corners
Android:radius="2dp"
Android:bottomRightRadius="0dp"
Android:bottomLeftRadius="0dp"
Android:topLeftRadius="15dp"
Android:topRightRadius="15dp"/>
</shape>
Vielleicht finden Sie das hilfreich.
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" Android:padding="10dp">
<solid Android:color="#FFFFFF"/>
<corners
Android:bottomRightRadius="0dp"
Android:bottomLeftRadius="0dp"
Android:topLeftRadius="15dp"
Android:topRightRadius="15dp"/>
</shape>
Ich denke, das Beste (für mein Verständnis Ihrer Frage) ist es, ein 9patch-Bild zu erstellen und es als Hintergrund zu verwenden. Es kann definiert werden, um es nach Bedarf zu strecken und auf XML-Ebene festzulegen, wodurch Code eingespart wird
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" Android:padding="10dp">
<solid Android:color="#FFFFFF"/>
<corners
Android:bottomRightRadius="0dp"
Android:bottomLeftRadius="0dp"
Android:topLeftRadius="15dp"
Android:topRightRadius="15dp"/>
</shape>
Verwenden Sie den obigen Code
Ich würde versuchen, ein abgerundetes Rechteck und dann zwei zusätzliche Rechtecke mit der gleichen Größe wie der Eckenradius des abgerundeten Rechtecks zu zeichnen, und sie in den Ecken platzieren, die nicht gerundet werden sollen.
So zum Beispiel ein abgerundetes Rechteck mit einem Radius von 15px und zwei reguläre Rechtecke 15x15px, die in den Ecken des abgerundeten Rechtecks platziert sind und nicht abgerundet werden sollten.
BEARBEITEN: Wenn Sie Ihre Frage erneut lesen, ist es möglicherweise besser, ein einfaches 9-Patch-Bild für den oberen und unteren Teil Ihrer Listenansicht zu erstellen. Sie würden sich auf diese Weise ohne Pixelisierung auf jede Größe ausdehnen. Dazu müssen Sie die Bilder jedoch vorher erstellen. Wenn Sie die Rechteckform verwenden, können Sie sie später leichter im Code ändern. Der 9-Patch-Weg wäre jedoch weniger hackig.