Posso desenhar retângulo em XML?

118

Gostaria de saber se consigo desenhar retângulo em XML. Eu sei como desenhar usando o método drawRect programaticamente.

user1301568
fonte
1
dizer que XML significa tudo e nada, ou seja, qualquer coisa ...
ShinTakezou
Qual é o propósito de usar XML? drawRect funciona no Canvas, que geralmente é usado na criação de visualizações personalizadas.
noob
Eu discordo completamente do @Creator, raramente usamos Canvas, a menos que seja para algo um pouco mais complexo. A versão XML facilita a alteração do plano de fundo em todo o aplicativo para elementos particulares da IU, como resultado dos atributos sendo definidos em um local.
Graham Smith
@GrahamSmith Eu perguntei qual era o propósito, para que eu pudesse saber o que ele queria fazer com isso. Você raramente usa um Canvas, eu usei muitas vezes desenvolvendo Games. Nada para concordar ou discordar aqui.
noob
@creator, desculpe, acho que interpretei mal o tom do comentário como "por que você se importaria?". Me desculpe.
Graham Smith

Respostas:

229

Sim, você pode e aqui está um que fiz 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>

Você pode criar um novo arquivo XML dentro da pasta drawable, adicionar o código acima e salvá-lo como rectangle.xml.

Para usá-lo dentro de um layout, você deve definir o android:backgroundatributo para a nova forma drawable. A forma que definimos não tem nenhuma dimensão e, portanto, terá as dimensões da vista que está definida no layout.

Então, juntando tudo:

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

Finalmente; você pode definir este retângulo para ser o fundo de qualquer visualização, embora para ImageViews você usaria android:src. Isso significa que você pode usar o retângulo como plano de fundo para ListViews, TextViews ... etc.

Graham Smith
fonte
1
Como alguém faria para que a cor pudesse ser definida a partir do layout do Android onde criamos o <View?
kobihudson 01 de
Eu acho que você não pode adicionar id para isso
Moses Aprico
como alterar a cor do traço de maneira programática?
Zahidul
34

Crie rectangle.xmlusando Shape Drawable Assim, coloque em sua pasta Drawable ...

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

coloque-o em um ImageView

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

Espero que isso ajude você.

N.Droid
fonte
21

Maneira rápida e suja:

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

tente isso

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

resultado

insira a descrição da imagem aqui

AGTHAMAYS
fonte
2

Use 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>
Faxriddin Abdullayev
fonte
0

criar arquivo de recurso em drawable

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#3b5998" />
<cornersandroid:radius="15dp"/>

Muhammad Kamran
fonte