2012-04-12 5 views
86

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

+0

говоря, что XML означает все и ничего, т. Е. Ничего ... – ShinTakezou

+0

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

+0

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

ответ

167

Да вы можете и здесь один я сделал раньше:

<?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 
    android:id="@+id/myRectangleView" 
    android:layout_width="200dp" 
    android:layout_height="50dp" 
    android:background="@drawable/rectangle"/> 

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

+1

Как кто-нибудь собирается сделать это так, чтобы цвет можно было установить из макета Android, где мы делаем kobihudson

+0

Я думаю, вы не можете добавить id для него –

24

Создание rectangle.xml с помощью Shape рисует Как это положить в вашу 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> 

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

+0

Большое спасибо. Это полезно. – user1301568

14

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

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

попробовать этот

   <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

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

<?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> 
Смежные вопросы