2012-04-12 26 views
86

Me pregunto si puedo dibujar un rectángulo en XML. Sé cómo dibujar utilizando el método drawRect mediante programación.¿Puedo dibujar un rectángulo en XML?

+0

diciendo XML significa todo y nada, es decir, cualquier cosa ... – ShinTakezou

+0

¿Cuál es el propósito de usar XML? drawRect funciona en Canvas, que generalmente se usa para crear vistas personalizadas. – noob

+0

Estoy totalmente de acuerdo con @Creator, raramente usamos Canvas a menos que sea para algo un poco más complejo. La versión XML facilita el cambio de fondo en toda la aplicación para elementos de IU particulares, como resultado de la definición de los atributos en una ubicación. –

Respuesta

167

Sí se puede y aquí es uno que hice anteriormente:

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/listview_background_shape"> 
    <stroke android:width="2dp" android:color="#ff207d94" /> 
    <padding android:left="2dp" 
     android:top="2dp" 
     android:right="2dp" 
     android:bottom="2dp" /> 
    <corners android:radius="5dp" /> 
    <solid android:color="#ffffffff" /> 
</shape> 

Se puede crear un nuevo archivo XML dentro de la carpeta estirable, y añadir el código anterior, a continuación, guardarlo como rectangle.xml.

Para usarlo dentro de un diseño, establecería el atributo android:background en la nueva forma dibujable. La forma que hemos definido no tiene ninguna dimensión y, por lo tanto, tomará las dimensiones de la Vista que se define en el diseño.

Así que ponerlo todo junto:

<View 
    android:id="@+id/myRectangleView" 
    android:layout_width="200dp" 
    android:layout_height="50dp" 
    android:background="@drawable/rectangle"/> 

último; puede establecer este rectángulo para que sea el fondo de cualquier Vista, aunque para ImageViews usaría android:src. Esto significa que podría usar el rectángulo como fondo para ListViews, TextViews ... etc.

+1

¿Cómo haría alguien para que el color se pueda establecer desde el diseño de Android donde hacemos kobihudson

+0

Creo que no puedes agregar la identificación –

24

Crear rectangle.xml usando Disponibles Forma gusta esta puso a su Disponibles carpeta ...

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <solid android:color="@android:color/transparent"/> 
    <corners android:radius="12px"/> 
    <stroke android:width="2dip" android:color="#000000"/> 
</shape> 

puso en una esperanza para ImageView

<ImageView 
android:id="@+id/rectimage" 
android:layout_height="150dp" 
android:layout_width="150dp" 
android:src="@drawable/rectangle"> 
</ImageView> 

esto le ayudará.

+0

Muchas gracias. Es útil. – user1301568

14

manera rápida y sucia:

<View 
    android:id="@+id/colored_bar" 
    android:layout_width="48dp" 
    android:layout_height="3dp" 
    android:background="@color/bar_red" /> 
7

tratar esta salida

   <TableRow 
        android:layout_width="match_parent" 
        android:layout_marginTop="5dp" 
        android:layout_height="wrap_content"> 

        <View 
         android:layout_width="15dp" 
         android:layout_height="15dp" 
         android:background="#3fe1fa" /> 

        <TextView 
         android:textSize="12dp" 
         android:paddingLeft="10dp" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textAppearance="?android:attr/textAppearanceMedium" 
         android:text="1700 Market Street" 
         android:id="@+id/textView8" /> 
       </TableRow> 

enter image description here

1

Usar este código

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 

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

<solid android:color="#Efffff" /> 

<stroke 
    android:width="2dp" 
    android:color="#25aaff" /> 

</shape> 
Cuestiones relacionadas