ฉันจะตั้งค่าสีพื้นหลังของกิจกรรมเป็นสีขาวตามโปรแกรมได้อย่างไร
ฉันจะตั้งค่าสีพื้นหลังของกิจกรรมเป็นสีขาวตามโปรแกรมได้อย่างไร
คำตอบ:
จัดการกับเค้าโครงรูทที่ใช้จากนั้นตั้งค่าสีพื้นหลัง เค้าโครงรูทคือสิ่งที่คุณเรียกว่า 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));
root.setBackgroundColor(getResources().getColor(android.R.color.red));
เพิ่มบรรทัดเดียวนี้ในกิจกรรมของคุณหลังการsetContentView()
โทร
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
ฉันชอบระบายสีตามธีมมากกว่า
<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>
android:windowBackground
จะปรากฏขึ้นก่อนในช่วงเวลาสั้น ๆ จากนั้นสีพื้นหลังของเค้าโครงจะเข้ามา ดังนั้นหากคุณใช้สองสีที่ต่างกันมันจะกะพริบบนหน้าจอ
windowBackground
มีผลกับพื้นหลังหน้าต่างเท่านั้น แต่colorBackground
มีผลต่อมุมมองทั้งหมดด้วย stackoverflow.com/questions/26266221/…
?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 ที่คุณต้องการเปลี่ยนแปลง
หากคุณต้องการอัปเดตค่าพื้นหลังแบบไดนามิกโปรดดูสิ่งต่อไปนี้:
ใน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));
แทน
คุณสามารถใช้สิ่งนี้เพื่อเรียกสีของ Android ที่กำหนดไว้ล่วงหน้า:
element.setBackgroundColor(android.R.color.red);
หากคุณต้องการใช้สีที่คุณกำหนดเองคุณสามารถเพิ่มสีที่กำหนดเองของคุณใน strings.xml จากนั้นใช้ด้านล่างเพื่อเรียกมัน
element.setBackgroundColor(R.color.mycolour);
อย่างไรก็ตามหากคุณต้องการตั้งค่าสีใน layout.xml ของคุณคุณสามารถแก้ไขและเพิ่มด้านล่างให้กับองค์ประกอบใด ๆ ที่ยอมรับได้
android:background="#FFFFFF"
ในการรับมุมมองรูทที่กำหนดไว้ในไฟล์ xml ของคุณโดยไม่มีแถบการดำเนินการคุณสามารถใช้สิ่งนี้:
View root = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);
ดังนั้นในการเปลี่ยนสีเป็นสีขาว:
root.setBackgroundResource(Color.WHITE);
View randview = new View(getBaseContext());
randview = (View)findViewById(R.id.container);
randview.setBackgroundColor(Color.BLUE);
ทำงานให้ฉัน ขอบคุณ.
final View rootView = findViewById(android.R.id.content);
rootView.setBackgroundResource(...);
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"));
}
});
}