Bir Aktivitenin arka plan rengini programlı olarak beyaza nasıl ayarlayabilirim?


Yanıtlar:


142

Kullanılan kök düzenine bir tutamaç alın, ardından bunun üzerine arka plan rengini ayarlayın. Kök düzeni, setContentView adını verdiğiniz şeydir.

 setContentView(R.layout.main);

  // Now get a handle to any View contained 
  // within the main layout you are using
  View someView = findViewById(R.id.randomViewInMainLayout);

  // Find the root view
  View root = someView.getRootView();

  // Set the color
  root.setBackgroundColor(getResources().getColor(android.R.color.red));

Bunu yaptığımda, Eclipse onu "Burada kaynak kimliği yerine çözümlenmiş rengi geçirmeli: getResources (). GetColor (android.R.color.red)" ile işaretliyor.
joriki

25
Son satırı şu şekilde değiştirroot.setBackgroundColor(getResources().getColor(android.R.color.red));
Luis Mendo

Bu cevap işe yarıyor; ancak soru soran kişiye göre yine de tamamen programatik değildir. Aşağıda Arunkumar'ın cevabını öneririm.
KVISH

263

setContentView()Aramadan sonra bu tek hattı aktivitenize ekleyin

getWindow().getDecorView().setBackgroundColor(Color.WHITE);

4
kabul. bu, kök düzeni uygulanmadan önce pencerenin rengini değiştirir, kabul edilen yanıt, etkinliğin düzenindeki kök öğenin rengini değiştirir
LairdPleng

1
Sadece aktivitenin arka plan rengini ayarlamak istiyorsanız, bunun doğru olması gerektiğini düşünüyorum.
shanwu

kök pencere rengini değiştirirken +
1'im var

Bu kesinlikle en iyi cevap
1QuickQuestion

Bunu yapmanın en kolay yolu budur. Aslında kabul edilenden daha iyi!
Dinith

85

Temaya göre renklendirmeyi tercih ederim

<style name="CustomTheme" parent="android:Theme.Light">
    <item name="android:windowBackground">@color/custom_theme_color</item>
    <item name="android:colorBackground">@color/custom_theme_color</item>
</style>

22
WindowBackground ve colorBackground arasındaki fark nedir?
AlikElzin-kilaka

1
Sadece windowBackground'u ayarlayın ve iyi çalışıyor. ColorBackground'un kullanımı nedir?
codezjx

8
@ AlikElzin-kilaka: Aradaki fark, uygulama başladığında android:windowBackgroundönce kısa bir süre için görünür ve ardından düzen arka plan renginin devreye girmesidir . Yani iki farklı renk kullanırsanız, ekranda titreyecektir.
GoTo

2
windowBackgroundyalnızca pencere arka planını colorBackgroundetkiler , ancak tüm görünümleri de etkiler. stackoverflow.com/questions/26266221/…
fdermishin

60
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:id="@+id/myScreen"
</LinearLayout>

Başka bir deyişle, "android: background", XML'de değiştirmek istediğiniz etikettir.

Arka plan değerini dinamik olarak güncellemeniz gerekiyorsa aşağıdakilere bakın:

Alıştırma: SeekBar ile arka plan rengini değiştirin


İyi nokta. Ne olursa olsun, verdiğim bağlantı bu soruyu oldukça kolay cevapladı.
I82Much

Bana renk için doğru değerleri verdiğini sanmıyorum !! #FFFFFF ile olurum
SJS

Bu, xml'de yapmak isteyen ve buraya bir google aramasıyla gelen bizler için iyi bir cevap.
Kacy

9

Senin içinde onCreate()yöntemle:

getWindow().getDecorView().setBackgroundColor(getResources().getColor(R.color.main_activity_background_color));

Ayrıca değerler klasörüne yeni bir XML dosyası eklemeniz color.xmlve orada yeni bir renk özelliği atamanız gerekir:

color.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_activity_background_color">#000000</color>
</resources>

color.xmlİstediğiniz herhangi bir adı adlandırabileceğinizi, ancak kod ile adlandırabileceğinizi unutmayın R.color.yourId.

DÜZENLE

Çünkü getResources().getColor()itiraz edildi, kullanmak getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); yerine.


8

Önceden tanımlanmış android renklerini aramak için bunu kullanabilirsiniz:

element.setBackgroundColor(android.R.color.red);

Kendi özel renklerinizden birini kullanmak istiyorsanız, kendi özel renginizi strings.xml dosyasına ekleyebilir ve ardından onu çağırmak için aşağıdakini kullanabilirsiniz.

element.setBackgroundColor(R.color.mycolour);

Bununla birlikte, layout.xml dosyanızdaki rengi ayarlamak istiyorsanız, aşağıdakini değiştirebilir ve onu kabul eden herhangi bir öğeye ekleyebilirsiniz.

android:background="#FFFFFF"

İlk tekniği kullanırsam, aslında şu şekilde erişilmesi gerektiğine dair bir uyarı alırım: getResources (). GetColor (android.R.color.black);

3

Xml dosyanızda eylem çubuğu olmadan tanımlanmış kök görünümü elde etmek için şunu kullanabilirsiniz:

View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);

Yani rengi beyaza çevirmek için:

root.setBackgroundResource(Color.WHITE);

3
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);

benim için çalıştı. teşekkür ederim.


Bu yanıt, Düşük Kaliteli Gönderiler gözden geçirme kuyruğundadır çünkü açıklama içermeyen bir koddur. Lütfen kodunuzun ne yaptığını ve soruyu nasıl yanıtladığını açıklayarak yanıtınızı geliştirin. Lütfen programlama sorularını faydalı bir şekilde yanıtlamak için bu tavsiyeyi okuyun .
Adi Inbar

2
Bunun arka planı istendiği gibi beyaz değil maviye ayarlaması çok komik.
Konrad Lindenbach

1
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);

1
Button btn;
View root;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button)findViewById(R.id.button);

    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            root =findViewById(R.id.activity_main).getRootView();
            root.setBackgroundColor(Color.parseColor("#FFFFFF"));
        }
    });
}
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.