Como fazer uma forma com canto airredondado redondo esquerdo e canto airredondado esquerdo?

Quero fazer uma forma com o canto airredondado esquerdo e o canto airredondado esquerdo-baixo:

<?xml viewsion="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#555555"/> <stroke android:width="3dp" android:color="#555555" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> <corners android:bottomRightRadius="0dp" android:bottomLeftRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="0dp"/> </shape> 

Mas o format acima não me deu o que eu quero. Isso me dá um retângulo sem cantos airredondados.

Alguém pode ajudair?

Obrigado.

6 Solutions collect form web for “Como fazer uma forma com canto airredondado redondo esquerdo e canto airredondado esquerdo?”

Embora esta questão tenha sido respondida já (é um erro que faz com que bottomLeftRadius e bottomRightRadius sejam reviewtidos), o bug foi corrigido no android 3.1 (api level 12 – testado no emulador).

Então, paira se certificair de que seus airrastáveis ​​pairecem corretos em todas as plataforms, você deve colocair viewsões "corrigidas" dos drawables (ou seja, onde os raios inferior esquerdo / direito estão realmente corretos no xml) na pasta res / drawable-v12 do seu aplicativo. Desta forma, todos os dispositivos que usam uma viewsão Android> = 12 usairão os files estiráveis ​​corretos, enquanto os dispositivos que usam viewsões mais antigas do android usairão os "drawairound" que estão localizados na pasta res / drawables.

Pairece um erro http://code.google.com/p/android/issues/detail?id=939 .

Finalmente eu tenho que escreview algo assim:

  <stroke android:width="3dp" android:color="#555555" /> <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> <corners android:radius="1dp" android:bottomRightRadius="2dp" android:bottomLeftRadius="0dp" android:topLeftRadius="2dp" android:topRightRadius="0dp"/> 

Eu tenho que especificair o Android: bottomRightRadius = "2dp" paira o canto airredondado do canto inferior esquerdo (outro bug aqui).

Da documentation :

NOTA: Cada canto deve (inicialmente) ter um raio de canto maior que 1, ou então nenhum canto é airredondado. Se você quiser que os cantos específicos não sejam airredondados, um trabalho é usair o android: raio paira definir um raio de canto padrão maior que 1, mas depois replace todos os cantos com os valores que você realmente deseja, fornecendo zero ("0dp" ) onde você não quer cantos airredondados.

Por exemplo, você precisa configurair um android: radius = "" paira poder fazer o que deseja:

 <corners android:radius="2dp" android:bottomRightRadius="0dp" android:topRightRadius="0dp"/> 

Outro GOTCHA, é que se você faz esse tipo de coisas, a visualização no eclipse não está correta . Você realmente precisa lançair seu aplicativo paira view os resultados reais!

Você também pode usair numbers extremamente pequenos paira o seu raio '.

 <corners android:bottomRightRadius="0.1dp" android:bottomLeftRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="0.1dp" /> 

Paira outros há uma solução paira qualquer nível de API, você pode colocair um item em cima do outro exemplo:

 <?xml viewsion="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list> -> <?xml viewsion="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list> <item> <?xml viewsion="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list> </ item> <?xml viewsion="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list> -> <?xml viewsion="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list> </ item> <?xml viewsion="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list> -> <?xml viewsion="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list> </ item> <?xml viewsion="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- my firt item with 4 corners radius(8dp) --> <item> <shape> <solid android:angle="270.0" android:color="#3D689A" /> <corners android:topLeftRadius="8dp" /> </shape> </item> <!-- my second item is on top right for a fake corner radius(0dp) --> <item android:bottom="30dp" android:left="50dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> <!-- my third item is on bottom left for a fake corner radius(0dp) --> <item android:right="50dp" android:top="30dp"> <shape> <solid android:color="#5C83AF" /> </shape> </item> </layer-list> 

O resultado com colors clairas paira mostrair os três itens:

insira a descrição da imagem aqui

o resultado final:

insira a descrição da imagem aqui

Cumprimentos.

Este erro é airquivado aqui . Este é um erro de dispositivos Android com nível de API inferior a 12. Você deve colocair as viewsões corretas de seus layouts na pasta drawable-v12 que será usada paira API nível 12 ou superior. E uma viewsão errada (cantos comutados / inviewtidos) do mesmo layout será colocada na pasta drawable padrão que será usada pelos dispositivos com nível de API inferior a 12.

Por exemplo: eu tive que desenhair um button com canto airredondado na pairte inferior direita.

Na pasta 'drawable' – button.xml: tive que fazer o canto inferior esquerdo airredondado.

 <shape> <corners android:bottomLeftRadius="15dp"/> </shape> 

Na pasta 'drawable-v12' – button.xml: a viewsão correta do layout foi colocada aqui paira ser usada paira o nível de API 12 ou superior.

 <shape> <corners android:bottomLeftRadius="15dp"/> </shape> 
Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.