webentwicklung-frage-antwort-db.com.de

Erstellen einer Rechteckform mit nur zwei abgerundeten Kanten

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.

28
Andrew

Ich änderte das Android:radius-Attribut in Android:topRightRadius und Android:topLeftRadius

17
Andrew
<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>
42
marnaish

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>
19
Ganesh Bhat

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

2
Asahi
<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 

1
Ganesh Bhat

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.

0
kcoppock