web-dev-qa-db-fra.com

Création d'un rectangle avec seulement deux bords arrondis

Je peux créer une forme qui est un rectangle avec toutes les arêtes arrondies. Cependant, ce que je veux, c'est une forme de rectangle avec seulement 2 des bords arrondis. Est-ce possible?

Je pirate ensemble un ListView qui ressemble à une bulle aux bords arrondis. Je cherche à ajouter un en-tête dont les deux bords supérieurs sont arrondis et un pied de page dont les deux bords inférieurs sont arrondis.

28
Andrew

J'ai changé l'attribut Android:radius en Android:topRightRadius et 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>

Ce code fonctionne juste (depuis?) Android version 2.2. En faisant référence à documentation , le code devrait ressembler à ceci:

<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

Vous pourriez trouver cela utile.

<?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

Je pense que le mieux (à ce que je comprends de votre question) est de créer une image 9patch et de l’utiliser comme arrière-plan - peut être défini pour s’étendre selon vos besoins et être défini au niveau XML, ce qui vous permet d’économiser du code.

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>

Utilisez le code ci-dessus 

1
Ganesh Bhat

J'essayais de dessiner un rectangle arrondi, puis deux autres rectangles de la même taille que le rayon du coin du rectangle arrondi, et de les placer dans les coins que vous ne souhaitez pas arrondir. 

Ainsi, par exemple, un rectangle arrondi avec un rayon de 15px et deux rectangles réguliers de 15x15px placés dans les coins du rectangle arrondi qui ne doit pas être arrondi.

EDIT: Relisez votre question, vous feriez peut-être mieux de créer une image simple de 9 correctifs pour le haut et le bas de votre liste. Ils s'étireraient à n'importe quelle taille de cette façon sans pixelisation. Cela nécessiterait toutefois de créer les images à l’avance, et il serait plus facile de modifier ultérieurement le code dans les formes rectangulaires. Cependant, la méthode des 9 correctifs serait moins astucieuse.

0
kcoppock