Come faccio a impostare il raggio angolo arrotondato di un disegnabile colore utilizzando XML?

StackOverflow https://stackoverflow.com/questions/2122199

  •  22-09-2019
  •  | 
  •  

Domanda

Sul sito web di Android, c'è una sezione su drawable colore . La definizione di queste drawable in XML è simile al seguente:

<resources>
    <drawable name="solid_red">#f00</drawable>
    <drawable name="solid_blue">#0000ff</drawable>
    <drawable name="solid_green">#f0f0</drawable>
</resources>

Nel api Java, hanno thr seguente metodo per definire angoli arrotondati:

setCornerRadius(float radius)

C'è un modo per impostare gli angoli arrotondati in XML?

È stato utile?

Soluzione

Utilizzare il tag <shape> per creare un drawable in XML con gli angoli arrotondati. (Si può fare altre cose con il tag forma come definire un gradiente di colore pure).

Ecco una copia di un file XML che sto usando in una delle mie applicazioni per creare un drawable con uno sfondo bianco, bordo nero e gli angoli arrotondati:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffffff"/>    

    <stroke android:width="3dp"
            android:color="#ff000000" />

    <padding android:left="1dp"
             android:top="1dp"
             android:right="1dp"
             android:bottom="1dp" /> 

    <corners android:bottomRightRadius="7dp"
             android:bottomLeftRadius="7dp"
             android:topLeftRadius="7dp"
             android:topRightRadius="7dp" /> 
</shape>

Altri suggerimenti

La risposta di mbaird funziona bene. Basta essere consapevoli del fatto che ci sembra essere un bug in Android (2.1 almeno), che se si imposta il raggio di ogni angolo individuo a 0, costringe tutti gli angoli a 0 (almeno questo è il caso con unità di "dp"; I didn 't provare con le altre unità).

Ho bisogno di una forma in cui sono stati arrotondati gli angoli superiori e gli angoli inferiori erano quadrato. Mi sono raggiunto questo impostando gli angoli volevo essere quadrato per un valore leggermente maggiore di 0: 0.1dp. Questo rende ancora come angoli retti, ma non forza gli altri angoli a 0 raggio.

Prova di sotto codice

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
    android:bottomLeftRadius="30dp"
    android:bottomRightRadius="30dp"
    android:topLeftRadius="30dp"
    android:topRightRadius="30dp" />
<solid android:color="#1271BB" />

<stroke
    android:width="5dp"
    android:color="#1271BB" />

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" /></shape>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top