Bisakah saya menggambar persegi panjang dalam XML?


118

Saya ingin tahu apakah saya bisa menggambar persegi panjang dalam XML. Saya tahu cara menggambar menggunakan metode drawRect secara terprogram.


1
mengatakan XML berarti semua dan tidak ada, yaitu apa saja ...
ShinTakezou

Apa tujuan menggunakan XML? drawRect berfungsi di Canvas, yang biasanya digunakan dalam membuat tampilan kustom.
noob

Saya sangat tidak setuju dengan @Creator, kami jarang menggunakan Canvas kecuali untuk sesuatu yang sedikit lebih kompleks. Versi XML memudahkan untuk mengubah latar belakang di seluruh aplikasi untuk elemen UI tertentu, sebagai hasil dari atribut yang ditentukan di satu lokasi.
Graham Smith

@GrahamSmith Saya menanyakan tujuannya, sehingga saya dapat mengetahui apa yang ingin dia lakukan dengan ini. Anda mungkin jarang menggunakan Canvas, saya menggunakannya berkali-kali untuk mengembangkan Game. Tidak ada yang setuju atau tidak setuju di sini.
noob

@creator maaf Saya rasa saya salah menafsirkan nada komentar sebagai "mengapa kamu repot-repot?". Permintaan maaf saya.
Graham Smith

Jawaban:


229

Ya, Anda bisa dan ini yang saya buat sebelumnya:

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

Anda dapat membuat file XML baru di dalam folder drawable, dan menambahkan kode di atas, lalu menyimpannya sebagai rectangle.xml.

Untuk menggunakannya di dalam tata letak, Anda harus menyetel android:backgroundatribut ke bentuk drawable baru. Bentuk yang telah kita tetapkan tidak memiliki dimensi, dan oleh karena itu akan mengambil dimensi Tampilan yang ditentukan dalam tata letak.

Jadi menggabungkan semuanya:

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

Akhirnya; Anda bisa menyetel persegi panjang ini menjadi latar belakang Tampilan apa pun, meskipun untuk ImageView Anda akan menggunakan android:src. Ini berarti Anda dapat menggunakan persegi panjang sebagai latar belakang untuk ListView, TextView ... dll.


1
Bagaimana cara seseorang membuatnya sehingga warna bisa disetel dari tata letak android tempat kita membuat <View?
kobihudson

Saya pikir Anda tidak dapat menambahkan id untuk itu
Moses Aprico

bagaimana cara mengubah warna guratan secara terprogram?
Zahidul

34

Buat rectangle.xmlmenggunakan Shape Drawable Seperti ini masukkan ke dalam Drawable Folder Anda ...

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

masukkan ke dalam ImageView

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

Semoga ini bisa membantu Anda.


21

Cara cepat dan kotor:

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

8

coba ini

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

keluaran

masukkan deskripsi gambar di sini


2

Gunakan kode ini

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

buat file sumber daya dalam 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"/>

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.