Android düzen öğesinin arka plan rengini ayarlama


199

Android UI tasarımında bir dizi slayttan bir etkinliğin tasarımını klonlamaya çalışıyorum . Ancak çok basit bir görevle ilgili bir sorunum var.

Resimde görüldüğü gibi düzen yarattık, ve başlık bir olan TextViewbir yer RelativeLayout. Şimdi arka plan rengini değiştirmek istiyorum RelativeLayout, ancak nasıl olduğunu anlayamıyorum.

XML dosyasındaki etikette android:backgroundözelliği ayarlayabileceğimi biliyorum RelativeLayout, ama ne için ayarlayabilirim? Birden fazla yerde kullanabileceğim yeni bir renk tanımlamak istiyorum. A drawableveya a stringmı?

Buna ek olarak, Eclipse Android UI tasarımcısı içinde bunun için çok basit bir yol olmasını beklerdim.

Bu, en fazla birkaç tıklama ile gerçekleştirilen bir etkinlik olması gerektiği için şu anda biraz sinirliyim. Yani herhangi bir yardım çok takdir edilmektedir. :)

Android etkinlik tasarımı


29
grafiği sağ tarafa çizmek için hangi yazılımı kullandınız?
lucas

8
@lucas: Sorularda belirtildiği gibi diyagramları çizmedim, Android UI tasarımındaki bir dizi slayttan. Sorudaki bağlantıya bakın.
Bjarke Freund-Hansen

Yanıtlar:


280

Genellikle içinde belirtilen basit renk kaynaklarını kullanabilirsiniz res/values/colors.xml.

<color name="red">#ffff0000</color>

ve bunu kullanarak android:background="@color/red". Bu renk başka herhangi bir yerde de kullanılabilir, örneğin metin rengi olarak. XML ile aynı şekilde referans verin veya yoluyla kod alın getResources().getColor(R.color.red).

Ayrıca herhangi bir çekilebilir kaynağı arka plan olarak kullanabilirsiniz android:background="@drawable/mydrawable", bunun için kullanın (yani 9patch çekilebilir, normal bitmapler, şekil çizilebilir, vb.).


6
Bir cazibe gibi çalışır, teşekkürler. Beni bunu okumam gereken referansa yönlendirebilir misiniz?
Bjarke Freund-Hansen

6
Uhh aslında: Hayır. Dokümanları aradım, bu oldukça standart android şeyler, ama gerçekten belgelenmiş bir yer yok gibi görünüyor. Ne dev sitesindeki öğreticiler ne de api örnekleri bunu kullanmaz. Bazı özellikleri söz konusu olduğunda android doc biraz eksik. Bazı dış derslerde kazara aldım sanırım. Genellikle api örneklerine ve örnek projelere göz atmak iyi bir fikirdir. Kodu ANDROID_SDK\samplesklasörün içinde bulabilirsiniz (çeşitli android sürümleri için). Tüm api örnek uygulaması her emülatör örneğinde önceden yüklenmiş olarak gelir.

2
Ayrıca sadece UI tasarımcısını kontrol ettim. Bulunması kolay bir şey yok. Ama yine de xml içine elle şeyler yazmanızı öneririm. Tasarımcı son zamanlarda çok gelişti, ancak bence hala kullanışlı değil. Bazı seçenekler sınırlı olmakla kalmaz, düzen bazen gerçek bir cihazda tamamen farklı görünür (özellikle referans verilen çekilebilir kaynakları kullanırken. Doğru şekilde ölçeklenmezler veya deneyimimde hiç görüntülenmezler) . Düzenlerinizi cihazınızda veya bir taklitçide test edin.

1
bazı "varsayılan" renkler için bu sözdizimini kullanabilirsiniz: android: background = "@ android: color / white"
dalf

1
getResources (). getColor () kullanımdan kaldırıldı.
Rohit Bandil

90

Yukarıdaki cevaplar hoş. İsterseniz programlı olarak da bu şekilde gidebilirsiniz.

İlk olarak, mizanpajınızın bir kimliği olmalıdır. +idRes / layout / *. Xml dosyasına aşağıdaki satırı yazarak ekleyin

<RelativeLayout ...
...
android:id="@+id/your_layout_id"
...
</RelativeLayout>

Ardından, Java kodunuzda aşağıdaki değişiklikleri yapın.

RelativeLayout rl = (RelativeLayout)findViewById(R.id.your_layout_id);
rl.setBackgroundColor(Color.RED);

Bunun dışında, colors.xml dosyasında tanımlanan renge sahipseniz, programlı olarak da yapabilirsiniz:

rl.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));

24
Dinamik olmasını istiyorsanız, XML kullanamayacağınızı düşünüyorum.
Guillermo Gutiérrez

1
+1 için çalışma zamanında durum bayrağına göre değiştirmem gerekiyor; Ayrıca Color.TRANSPARENT sabitini kullanarak orijinal rengi geri alabildim.
Zac

10
@ BjarkeFreund-Hansen Diğer cevapları da kabul ediyor ve bu programlı çözümü sunuyor. Değer düşük değil.
Anubian Noob

4
@ BjarkeFreund-Hansen, soru, arka planın nasıl renk tanımlanacağı değil, doğru okunacağı şekilde nasıl ayarlanacağıdır. Peki ya soru bu olursa. Bunu kabul ediyorum ve "sen de gidebilirsin" dedim .... o gidebilir ya da olmayabilir. Ayrıca gördüğünüz gibi başkalarına da yardımcı olabilir. yapabilir misin ??
Android Katil

7
artı bir sadece @ BjarkeFreund-Hansen eksi bir telafi etmek için
Rahul

42

Renginiz için android:background="#DC143C"veya diğer RGB değerlerini kullanabilirsiniz . Burada belirtildiği gibi bu şekilde kullanmakta sorunum yok


5
-1 açıkça yazdım çünkü soruya "Birden fazla yerde kullanabileceğim yeni bir renk tanımlamak istiyorum" diye yazdım, çünkü renk değerini sabit kodlamak istemedim, ancak bunu birçok yerde kullanabileceğim bir kaynak olarak tanımladım.
Bjarke Freund-Hansen

6
@ GMsoF: Ah işe yarıyor ama soruya cevap vermiyor.
Bjarke Freund-Hansen

21

The

res/values/colors.xml.

<color name="red">#ffff0000</color>
android:background="@color/red"

örnek benim için işe yaramadı, ama

android:background="#(hexidecimal here without these parenthesis)"

benim için göreceli düzen öğesinde bir öznitelik olarak çalıştı.


10
Renk etiketini bir kaynak etiketi ile sarmayı unuttunuz mu?
elimirks

19

Bir rengi hızlı bir şekilde değiştirmek istiyorsanız (ve Hex numaralarını ezberlemiyorsanız) android'in şu şekilde erişebileceğiniz birkaç önceden ayarlanmış rengi vardır:

android:background="@android:color/black"

Aralarından seçim yapabileceğiniz 15 renk arasından seçim yapabilirsiniz ve ek dosyalar ayarlamanıza gerek yoktur.

Bir değerleri / colors.xml dosyası ayarlamak ve yukarıda açıklandığı gibi düz Hex kullanmak yine de işe yarayacaktır.


4

4 olası yol, ihtiyacınız olanı kullanın.

1. Kotlin

val ll = findViewById<LinearLayout>(R.id.your_layout_id)
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white))

2. Veri Bağlama

<LinearLayout
    android:background="@{@color/white}"

VEYA daha yararlı bir ifade-

<LinearLayout
    android:background="@{model.colorResId}"

3. XML

<LinearLayout
    android:background="#FFFFFF"

<LinearLayout
    android:background="@color/white"

4. Java

LinearLayout ll = (LinearLayout) findViewById(R.id.your_layout_id);
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white));

2

Android studio 2.1.2 (veya daha önce muhtemelen) bir renk tekerleğinden seçim yapmanıza izin verir:

Android Studio'da Renk Çarkı

Bunu düzenime aşağıdakileri ekleyerek anladım:

android:background="#FFFFFF"

Sonra FFFFFF rengine tıkladım ve ortaya çıkan ampulü tıkladım.


1

Kotlin

linearLayout.setBackgroundColor(Color.rgb(0xf4,0x43,0x36))

veya

<color name="newColor">#f44336</color>

-

linearLayout.setBackgroundColor(ContextCompat.getColor(vista.context, R.color.newColor))

0

Her şeyden önce cevaplar statiktir. Dinamik bir cevap vereceğimi düşündüm. Senkronize edilmesi gereken iki dosya foo.xml, mizanpajla ilişkilidir ve activity_bar.javabuna karşılık gelen Java sınıfına karşılık gelir R.layout.foo.

Gelen foo.xmltüm düzeni için bir kimliği ayarlayın:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/foo" .../>

Ve activity_bar.javarenk setinde onCreate():

public class activity_bar extends AppCompatActivty {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.foo);

            //Set an id to the layout
        RelativeLayout currentLayout = 
                    (RelativeLayout) findViewById(R.id.foo);

        currentLayout.setBackgroundColor(Color.RED);
        ...
    }
    ...
}

Umarım bu yardımcı olur.

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.