วิธีการตั้งค่าสีพื้นหลังของกิจกรรมเป็นสีขาวโดยทางโปรแกรม?


คำตอบ:


142

จัดการกับเค้าโครงรูทที่ใช้จากนั้นตั้งค่าสีพื้นหลัง เค้าโครงรูทคือสิ่งที่คุณเรียกว่า setContentView ด้วย

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

เมื่อฉันทำสิ่งนี้ Eclipse จะตั้งค่าสถานะด้วย "ควรส่งสีที่แก้ไขแล้วแทนที่จะเป็นรหัสทรัพยากรที่นี่: getResources (). getColor (android.R.color.red)"
joriki

25
เปลี่ยนบรรทัดสุดท้ายเป็นroot.setBackgroundColor(getResources().getColor(android.R.color.red));
Luis Mendo

คำตอบนี้ใช้ได้ผล แต่ก็ยังไม่เป็นโปรแกรมอย่างสมบูรณ์ตามที่ผู้ถามถาม ฉันขอแนะนำคำตอบของ Arunkumar ด้านล่าง
KVISH

263

เพิ่มบรรทัดเดียวนี้ในกิจกรรมของคุณหลังการsetContentView()โทร

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

4
ตกลง สิ่งนี้จะเปลี่ยนสีของหน้าต่างก่อนที่จะใช้โครงร่างรูทคำตอบที่ยอมรับจะเปลี่ยนสีขององค์ประกอบรูทในเค้าโครงของกิจกรรม
LairdPleng

1
ฉันคิดว่าอันนี้น่าจะถูกต้องถ้าคุณแค่ต้องการกำหนดสีพื้นหลังของกิจกรรม
shanwu

มี +1 ของฉันเมื่อมันเปลี่ยนสีหน้าต่างรูท
mparkes

นี่คือคำตอบที่ดีที่สุดอย่างแน่นอน
1QuickQuestion

นี่เป็นวิธีที่ง่ายที่สุดในการทำเช่นนั้น จริงดีกว่ายอมรับ!
Dinith

85

ฉันชอบระบายสีตามธีมมากกว่า

<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 กับ colorBackground ต่างกันอย่างไร?
AlikElzin-kilaka

1
เพียงแค่ตั้งค่า windowBackground และใช้งานได้ดี การใช้ colorBackground คืออะไร?
codezjx

8
@ AlikElzin-kilaka: ความแตกต่างคือเมื่อแอปเริ่มต้นandroid:windowBackgroundจะปรากฏขึ้นก่อนในช่วงเวลาสั้น ๆ จากนั้นสีพื้นหลังของเค้าโครงจะเข้ามา ดังนั้นหากคุณใช้สองสีที่ต่างกันมันจะกะพริบบนหน้าจอ
GoTo

2
windowBackgroundมีผลกับพื้นหลังหน้าต่างเท่านั้น แต่colorBackgroundมีผลต่อมุมมองทั้งหมดด้วย 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>

กล่าวอีกนัยหนึ่งคือ "android: background" คือแท็กใน XML ที่คุณต้องการเปลี่ยนแปลง

หากคุณต้องการอัปเดตค่าพื้นหลังแบบไดนามิกโปรดดูสิ่งต่อไปนี้:

การออกกำลังกาย: เปลี่ยนสีพื้นหลังโดย SeekBar


จุดที่ดีมม โดยไม่คำนึงถึงลิงก์ที่ฉันให้คำตอบสำหรับคำถามนั้นค่อนข้างสะดวก
I82 มาก

ฉันไม่คิดว่าคุณให้ค่าสีที่เหมาะสมกับฉัน !! ฉันเข้าใจแล้วด้วย #FFFFFF
SJS

นี่เป็นคำตอบที่ดีสำหรับพวกเราที่ต้องการทำใน xml และมาที่นี่ผ่านการค้นหาของ Google
Kacy

9

ในonCreate()วิธีการของคุณ:

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

นอกจากนี้คุณต้องเพิ่มไฟล์ XML ใหม่ที่เรียกว่าcolor.xmlและกำหนดคุณสมบัติสีใหม่ในโฟลเดอร์ values :

color.xml:

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

โปรดทราบว่าคุณสามารถตั้งชื่อcolor.xmlชื่อใด ๆ ที่คุณต้องการ R.color.yourIdแต่คุณอ้างถึงมันด้วยโค้ด

แก้ไข

เนื่องจากgetResources().getColor()เลิกใช้งานแล้วให้ใช้getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); แทน


8

คุณสามารถใช้สิ่งนี้เพื่อเรียกสีของ Android ที่กำหนดไว้ล่วงหน้า:

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

หากคุณต้องการใช้สีที่คุณกำหนดเองคุณสามารถเพิ่มสีที่กำหนดเองของคุณใน strings.xml จากนั้นใช้ด้านล่างเพื่อเรียกมัน

element.setBackgroundColor(R.color.mycolour);

อย่างไรก็ตามหากคุณต้องการตั้งค่าสีใน layout.xml ของคุณคุณสามารถแก้ไขและเพิ่มด้านล่างให้กับองค์ประกอบใด ๆ ที่ยอมรับได้

android:background="#FFFFFF"

หากฉันใช้เทคนิคแรกฉันได้รับคำเตือนว่าควรเข้าถึงได้จริงเช่นนี้ getResources () getColor (android.R.color.black);

3

ในการรับมุมมองรูทที่กำหนดไว้ในไฟล์ xml ของคุณโดยไม่มีแถบการดำเนินการคุณสามารถใช้สิ่งนี้:

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

ดังนั้นในการเปลี่ยนสีเป็นสีขาว:

root.setBackgroundResource(Color.WHITE);

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

ทำงานให้ฉัน ขอบคุณ.


คำตอบนี้อยู่ในคิวการตรวจสอบโพสต์คุณภาพต่ำเนื่องจากเป็นเพียงโค้ดที่ไม่มีคำอธิบาย โปรดปรับปรุงคำตอบของคุณโดยอธิบายว่าโค้ดของคุณใช้ทำอะไรและตอบคำถามได้อย่างไร โปรดอ่านคำแนะนำนี้ในการตอบคำถามการเขียนโปรแกรมอย่างเป็นประโยชน์
Adi Inbar

2
ค่อนข้างตลกที่สิ่งนี้กำหนดพื้นหลังเป็นสีน้ำเงินและไม่ใช่สีขาวตามที่ร้องขออย่างชัดเจน
Konrad Lindenbach


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"));
        }
    });
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.