Чи можна намалювати прямокутник у 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-файл всередині папки, що витягується, і додати вищевказаний код, а потім зберегти його як прямокутник.xml.

Щоб використовувати його всередині макета, слід встановити android:backgroundатрибут нової форми, що малюється. Форма, яку ми визначили, не має жодних розмірів, і тому буде приймати розміри View, визначені у макеті.

Тож склавши все це разом:

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

Нарешті; ви можете встановити цей прямокутник як фон будь-якого представлення, хоча для ImageViews ви б використовували android:src. Це означає, що ви можете використовувати прямокутник як фон для ListViews, TextViews ... тощо.


1
Як би хтось пішов про це, щоб колір можна було встановити з андроїдного макета, де ми робимо <Перегляд?
кобігудсон

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

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

34

Створіть rectangle.xmlза допомогою форми "Мальованість" Як це додано до папки " Мальованість " ...

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

створити файл ресурсу в драйвовому режимі

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