我可以在XML中绘制矩形吗?


118

我想知道是否可以在XML中绘制矩形。我知道如何以编程方式使用drawRect方法进行绘制。


1
说XML意味着什么也没有什么,也就是什么……
ShinTakezou 2012年

使用XML的目的是什么?drawRect可在Canvas上使用,通常用于创建自定义视图。
noob 2012年

我与@Creator完全不同,除非很少使用Canvas,否则我们很少使用Canvas。由于在一个位置定义了属性,因此XML版本可以轻松更改整个应用程序中特定UI元素的背景。
格雷厄姆·史密斯

我要求使用@GrahamSmith,以便我可以了解他想对此做些什么。您可能很少使用Canvas,我曾多次使用它来开发Games。这里没有同意或不同意的地方。
小白

@creator对不起,我想我将评论语气误解为“您为什么要打扰?”。我很抱歉。
格雷厄姆·史密斯

Answers:


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>

您可以在drawable文件夹中创建一个新的XML文件,并添加上面的代码,然后将其另存为rectangle.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
有人将如何制作它,以便可以从我们制作<View的android布局中设置颜色?
kobihudson

我认为您无法为其添加ID
Moses Aprico '16

如何以编程方式更改笔触颜色?
Zahidul

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.