2012-04-12 24 views
86

我想知道我是否可以在XML中繪製矩形。 我知道如何以編程方式使用drawRect方法。我可以在XML中繪製矩形嗎?

+0

說XML意味着什麼都沒有,即任何東西...... – ShinTakezou 2012-04-12 13:50:55

+0

使用XML的目的是什麼? drawRect在Canvas上工作,通常用於創建自定義視圖。 – noob 2012-04-12 13:52:22

+0

我完全用@Creator來描述,我們很少使用Canvas,除非它是爲了更復雜一點。由於在一個位置定義了屬性,因此XML版本可以輕鬆地爲整個應用程序更改特定UI元素的背景。 – 2012-04-12 14:16:06

回答

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

最後;您可以將此矩形設置爲任何視圖的背景,但對於ImageView,您可以使用android:src。這意味着你可以使用矩形作爲ListViews,TextViews等的背景。

+1

怎麼會有人去做它,使顏色可以從android佈局設置我們使<視圖? – kobihudson 2015-12-01 23:50:28

+0

我認爲你不能爲它添加id – 2016-08-16 04:33:36

24

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

希望這會幫助你。

+0

非常感謝。它是有益的。 – user1301568 2012-04-13 04:33:41

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>