Могу ли я нарисовать прямоугольник в XML?


118

Интересно, могу ли я нарисовать прямоугольник в XML. Я умею программно рисовать с помощью метода drawRect.


1
говоря, что XML означает все и ничего, т.е. что угодно ...
ShinTakezou

Какая цель использования XML? drawRect работает на Canvas, который обычно используется при создании пользовательских представлений.
noob

Я полностью не согласен с @Creator, мы редко используем Canvas, если только он не для чего-то более сложного. Версия XML позволяет легко изменять фон во всем приложении для определенных элементов пользовательского интерфейса в результате того, что атрибуты определены в одном месте.
Грэм Смит

@GrahamSmith Я спросил о цели, чтобы я мог узнать, что он хотел с этим делать. Вы можете редко использовать Canvas, я использовал его много раз при разработке игр. Здесь не с чем соглашаться или не соглашаться.
noob

@creator извините, мне кажется, я неверно истолковал тон комментария как «зачем вам беспокоиться?». Мои извинения.
Грэм Смит

Ответы:


229

Да, вы можете, и вот тот, который я сделал ранее:

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

Вы можете создать новый XML-файл внутри папки с возможностью рисования и добавить приведенный выше код, а затем сохранить его как rectangle.xml.

Чтобы использовать его внутри макета, вы должны установить android:backgroundатрибут в новую фигуру, которую можно рисовать. Форма, которую мы определили, не имеет размеров, поэтому она будет иметь размеры View, которые определены в макете.

Итак, собираем все вместе:

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

В заключение; вы можете установить этот прямоугольник в качестве фона любого представления, хотя для ImageView вы бы использовали android:src. Это означает, что вы можете использовать прямоугольник в качестве фона для ListViews, TextViews ... и т. Д.


1
Как бы кто-то сделал так, чтобы цвет можно было установить из макета Android, где мы делаем <View?
kobihudson

Я думаю, вы не можете добавить идентификатор для этого
Моисей Априко

как программно изменить цвет обводки?
Захидул

34

Создавайте rectangle.xmlс помощью Shape Drawable. Вот так положите в папку 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>

положить это в ImageView

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

Надеюсь, что это поможет вам.


21

Быстрый и грязный способ:

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

8

попробуй это

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

вывод

введите описание изображения здесь


2

Используйте этот код

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

создать файл ресурсов в 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"/>

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.