XML'de dikdörtgen çizebilir miyim?


118

XML'de dikdörtgen çizebilir miyim merak ediyorum. DrawRect yöntemini programlı olarak kullanarak nasıl çizeceğimi biliyorum.


1
XML demek her şey ve hiçbir şey demek, yani herhangi bir şey ...
ShinTakezou

XML kullanmanın amacı nedir? drawRect, genellikle özel görünümler oluşturmada kullanılan Canvas üzerinde çalışır.
noob

@Creator ile tamamen aynı fikirde değilim, biraz daha karmaşık bir şey olmadığı sürece Canvas'ı nadiren kullanıyoruz. XML sürümü, tek bir konumda tanımlanmış özniteliklerin bir sonucu olarak, belirli UI öğeleri için tüm uygulama genelinde arka planı değiştirmeyi kolaylaştırır.
Graham Smith

@GrahamSmith Ben bununla ne yapmak istediğini öğrenebilmem için amacı sordum. Nadiren bir Canvas kullanabilirsiniz, ben onu birçok kez Oyun geliştirirken kullandım. Burada hemfikir olunacak veya katılmayacak hiçbir şey yok.
noob

@creator özür dilerim, yorumun tonunu "neden rahatsız edesiniz?" şeklinde yanlış yorumladığımı düşünüyorum. Özür dilerim.
Graham Smith

Yanıtlar:


229

Evet yapabilirsin ve işte daha önce yaptığım şey:

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

Çekilebilir klasörün içinde yeni bir XML dosyası oluşturabilir ve yukarıdaki kodu ekleyebilir, ardından bunu rectangle.xml olarak kaydedebilirsiniz.

Bir düzen içinde kullanmak için, android:backgroundniteliği yeni çekilebilir şekle ayarlarsınız . Tanımladığımız şeklin herhangi bir boyutu yoktur ve bu nedenle mizanpajda tanımlanan Görünümün boyutlarını alacaktır.

Yani hepsini bir araya getirirsek:

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

En sonunda; Bu dikdörtgeni herhangi bir Görünümün arka planı olacak şekilde ayarlayabilirsiniz, ancak Görüntü Görünümleri için kullanabilirsiniz android:src. Bu, dikdörtgeni ListViews, TextViews ... vb. İçin arka plan olarak kullanabileceğiniz anlamına gelir.


1
Rengin <View?
kobihudson

Sanırım bunun için kimlik ekleyemezsin
Moses Aprico

kontur rengi programatik olarak nasıl değiştirilir?
Zahidul

34

rectangle.xmlShape Drawable kullanarak oluşturun Bunun gibi Çekilebilir Klasörünüze koyun ...

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

içine koy ImageView

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

Umarım bu sana yardımcı olur.


21

Hızlı ve kirli yol:

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

8

bunu dene

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

çıktı

görüntü açıklamasını buraya girin


2

Bu kodu kullanın

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

çekilebilir olarak kaynak dosyası oluştur

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.