Czy mogę narysować prostokąt w XML?


118

Zastanawiam się, czy mogę narysować prostokąt w XML. Wiem, jak programowo rysować metodą drawRect.


1
mówienie, że XML oznacza wszystko i nic, czyli wszystko ...
ShinTakezou

Jaki jest cel używania XML? drawRect działa na płótnie, które jest zwykle używane do tworzenia niestandardowych widoków.
noob

Całkowicie zgadzam się z @Creator, rzadko używamy Canvas, chyba że jest to coś nieco bardziej złożonego. Wersja XML ułatwia zmianę tła w całej aplikacji dla poszczególnych elementów interfejsu użytkownika, ponieważ atrybuty są zdefiniowane w jednej lokalizacji.
Graham Smith

@GrahamSmith Zapytałem o cel, abym mógł się dowiedzieć, co chciał z tym zrobić. Rzadko możesz używać Canvas, użyłem go wiele razy podczas tworzenia gier. Nie ma tu nic do wyrażenia zgody lub sprzeciwu.
noob

@creator przepraszam. Myślę, że błędnie zinterpretowałem ton komentarza jako „dlaczego miałbyś się przejmować?”. Przepraszam.
Graham Smith

Odpowiedzi:


229

Tak, możesz i oto jeden, który zrobiłem wcześniej:

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

Możesz utworzyć nowy plik XML w folderze do rysowania i dodać powyższy kod, a następnie zapisać go jako rectangle.xml.

Aby użyć go w układzie, należy ustawić android:backgroundatrybut na nowy kształt do rysowania. Zdefiniowany przez nas kształt nie ma żadnych wymiarów, dlatego przyjmie wymiary Widoku zdefiniowanego w układzie.

Więc łącząc to wszystko razem:

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

Wreszcie; możesz ustawić ten prostokąt jako tło dowolnego widoku, chociaż w przypadku ImageViews byś użył android:src. Oznacza to, że możesz użyć prostokąta jako tła dla ListViews, TextViews ... itd.


1
Jak ktoś mógłby zrobić to tak, aby można było ustawić kolor z układu Androida, w którym tworzymy <View?
kobihudson

Myślę, że nie możesz dodać do tego identyfikatora
Moses Aprico

jak programowo zmienić kolor obrysu?
Zahidul

34

Utwórz rectangle.xmlużywając Shape Drawable W ten sposób umieść w swoim folderze do rysowania ...

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

umieść go w pliku ImageView

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

Mam nadzieję, że to ci pomoże.


21

Szybki i brudny sposób:

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

8

Spróbuj tego

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

wynik

wprowadź opis obrazu tutaj


2

Użyj tego kodu

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

0

utwórz plik zasobów w formacie 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"/>

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.