Tôi có thể vẽ hình chữ nhật trong XML không?


118

Tôi tự hỏi liệu tôi có thể vẽ hình chữ nhật trong XML không. Tôi biết cách vẽ bằng phương pháp drawRect theo lập trình.


1
nói có nghĩa là XML tất cả và không có gì, bất cứ điều gì có nghĩa là ...
ShinTakezou

Mục đích của việc sử dụng XML là gì? drawRect hoạt động trên Canvas, thường được sử dụng để tạo chế độ xem tùy chỉnh.
noob

Tôi hoàn toàn chẩn đoán với @Creator, chúng tôi hiếm khi sử dụng Canvas trừ khi nó dành cho thứ gì đó phức tạp hơn một chút. Phiên bản XML giúp dễ dàng thay đổi nền trên toàn bộ ứng dụng cho các phần tử giao diện người dùng cụ thể, do các thuộc tính được xác định ở một vị trí.
Graham Smith

@GrahamSmith Tôi đã hỏi mục đích để tôi có thể biết anh ấy muốn làm gì với điều này. Bạn có thể hiếm khi sử dụng Canvas, tôi đã sử dụng nó nhiều lần khi phát triển Trò chơi. Không có gì để đồng ý hoặc không đồng ý ở đây.
noob

@creator xin lỗi, tôi nghĩ rằng tôi đã hiểu sai giọng điệu của nhận xét là "tại sao bạn lại làm phiền?". Lời xin lỗi của tôi.
Graham Smith

Câu trả lời:


229

Có, bạn có thể và đây là một trong những tôi đã thực hiện trước đó:

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

Bạn có thể tạo một tệp XML mới bên trong thư mục có thể vẽ và thêm đoạn mã trên, sau đó lưu nó dưới dạng hình chữ nhật.xml.

Để sử dụng nó bên trong một bố cục, bạn sẽ đặt android:backgroundthuộc tính thành hình dạng có thể vẽ mới. Hình dạng chúng tôi đã xác định không có bất kỳ kích thước nào và do đó sẽ lấy các kích thước của Chế độ xem được xác định trong bố cục.

Vì vậy, tổng hợp tất cả lại với nhau:

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

Cuối cùng; bạn có thể đặt hình chữ nhật này làm nền của bất kỳ Chế độ xem nào, mặc dù đối với ImageView bạn sẽ sử dụng android:src. Điều này có nghĩa là bạn có thể sử dụng hình chữ nhật làm nền cho ListViews, TextViews ... vv.


1
Ai đó sẽ làm thế nào để tạo ra nó để màu sắc có thể được thiết lập từ bố cục android nơi chúng tôi tạo <View?
kobihudson

Tôi nghĩ bạn không thể thêm id cho nó
Moses Aprico

làm thế nào để thay đổi màu nét theo chương trình?
Zahidul

34

Tạo rectangle.xmlbằng cách sử dụng Hình dạng có thể vẽ Như thế này được đưa vào Thư mục Có thể vẽ của bạn ...

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

đặt nó vào một ImageView

<ImageView 
android:id="@+id/rectimage" 
android:layout_height="150dp" 
android:layout_width="150dp" 
android:src="@drawable/rectangle">
</ImageView>

Hy vọng điều này sẽ giúp bạn.


21

Cách nhanh chóng và bẩn thỉu:

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

8

thử cái này

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

đầu ra

nhập mô tả hình ảnh ở đây


2

Sử dụng mã này

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

tạo tệp tài nguyên có thể vẽ được

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.