ฉันสามารถวาดสี่เหลี่ยมผืนผ้าใน XML ได้หรือไม่


118

ฉันสงสัยว่าฉันสามารถวาดสี่เหลี่ยมผืนผ้าใน XML ได้หรือไม่ ฉันรู้วิธีวาดโดยใช้เมธอด drawRect โดยทางโปรแกรม


1
การบอกว่า XML หมายถึงทั้งหมดและไม่มีอะไรคืออะไรก็ได้ ...
ShinTakezou

วัตถุประสงค์ของการใช้ XML คืออะไร? drawRect ทำงานบน Canvas ซึ่งโดยปกติจะใช้ในการสร้างมุมมองแบบกำหนดเอง
noob

ฉันเห็นด้วยกับ @Creator อย่างสมบูรณ์เราแทบไม่ได้ใช้ Canvas เว้นแต่จะมีอะไรที่ซับซ้อนกว่านี้เล็กน้อย เวอร์ชัน XML ทำให้ง่ายต่อการเปลี่ยนพื้นหลังทั่วทั้งแอปสำหรับองค์ประกอบ UI เฉพาะอันเป็นผลมาจากการกำหนดแอตทริบิวต์ในตำแหน่งเดียว
Graham Smith

@GrahamSmith ฉันขอจุดประสงค์เพื่อที่ฉันจะได้รู้ว่าเขาต้องการทำอะไรกับสิ่งนี้ คุณอาจไม่ค่อยใช้ Canvas ฉันใช้มันหลายครั้งในการพัฒนาเกม ไม่มีอะไรจะเห็นด้วยหรือไม่เห็นด้วยที่นี่
noob

@creator ขอโทษฉันคิดว่าฉันตีความน้ำเสียงของความคิดเห็นผิดว่า "จะรบกวนทำไม" ขอโทษด้วย.
Graham Smith

คำตอบ:


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

สุดท้าย; คุณสามารถตั้งค่าให้สี่เหลี่ยมผืนผ้านี้เป็นพื้นหลังของ View ใด ๆ ก็ได้แม้ว่าคุณจะใช้ ImageViews android:srcก็ตาม ซึ่งหมายความว่าคุณสามารถใช้สี่เหลี่ยมผืนผ้าเป็นพื้นหลังสำหรับ ListViews, TextViews ... ฯลฯ


1
จะมีใครทำอย่างไรเพื่อให้สีสามารถตั้งค่าจากเค้าโครงของ Android ที่เราสร้าง <View?
kobihudson

ฉันคิดว่าคุณไม่สามารถเพิ่ม id ได้
Moses Aprico

วิธีการเปลี่ยนสีเส้นโครงร่างโดยโปรแกรม?
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>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.