Làm cách nào để đặt màu nền của Hoạt động thành màu trắng theo chương trình?


Câu trả lời:


142

Nhận một điều khiển để bố trí gốc được sử dụng, sau đó đặt màu nền trên đó. Bố cục gốc là bất cứ thứ gì bạn gọi là 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));

Khi tôi làm điều này, Eclipse gắn cờ nó với "Nên chuyển màu đã giải quyết thay vì id tài nguyên ở đây: getResource (). GetColor (android.R.color.red)".
joriki

25
Thay đổi dòng cuối cùng thànhroot.setBackgroundColor(getResources().getColor(android.R.color.red));
Luis Mendo

Câu trả lời này hoạt động; nhưng nó vẫn không hoàn toàn lập trình theo người hỏi. Tôi muốn đề nghị câu trả lời của Arunkumar dưới đây.
KVISH

263

Thêm dòng duy nhất này vào hoạt động của bạn, sau setContentView()cuộc gọi

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

4
đã đồng ý. điều này thay đổi màu của cửa sổ trước khi bố trí gốc được áp dụng, câu trả lời được chấp nhận sẽ thay đổi màu của phần tử gốc trong bố cục của hoạt động
LairdPleng

1
Tôi nghĩ cái này phải là cái đúng, nếu bạn chỉ muốn đặt màu nền của hoạt động.
shanwu

có +1 của tôi khi nó thay đổi màu cửa sổ gốc
mparkes

Đây chắc chắn là câu trả lời hay nhất
1QuickQuestion 14/10/18

Đây là phương pháp dễ nhất để làm điều đó. Thực sự tốt hơn là chấp nhận một!
Dinith

85

Tôi thích tô màu theo chủ đề

<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
Sự khác biệt giữa windowBackground và colorBackground là gì?
AlikElzin-kilaka

1
Chỉ cần đặt windowBackground và nó hoạt động tốt. Việc sử dụng colorBackground là gì?
codezjx 14/07/2015

8
@ AlikElzin-kilaka: sự khác biệt là khi ứng dụng bắt đầu android:windowBackgroundhiển thị trước, trong một khoảnh khắc ngắn, và sau đó màu nền bố cục sẽ chiếm. Vì vậy, nếu bạn sử dụng hai màu khác nhau, nó sẽ nhấp nháy trên màn hình.
GoTo

2
windowBackgroundchỉ ảnh hưởng đến nền cửa sổ, nhưng cũng colorBackgroundảnh hưởng đến tất cả các chế độ xem. stackoverflow.com/questions/26266221/ từ
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>

Nói cách khác, "android: nền" là thẻ trong XML mà bạn muốn thay đổi.

Nếu bạn cần cập nhật động giá trị nền, hãy xem phần sau:

Bài tập: Thay đổi màu nền, bởi SeekBar


Mm điểm tốt. Vâng, bất kể, liên kết tôi đã đưa ra câu trả lời câu hỏi đó khá cẩn thận.
I82Much

Tôi không nghĩ rằng bạn cung cấp cho tôi các giá trị đúng cho màu sắc !! tôi đã nhận nó với #FFFFFF
SJS

Đây là một câu trả lời tốt cho những người trong chúng ta muốn làm điều đó trong xml và đã đến đây thông qua một tìm kiếm google.
Kacy

9

Trong onCreate()phương pháp của bạn :

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

Ngoài ra, bạn cần thêm vào thư mục giá trị một tệp XML mới được gọi color.xmlvà Gán ở đó một thuộc tính màu mới:

color.xml:

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

Lưu ý rằng bạn có thể đặt tên cho color.xmlbất kỳ tên nào bạn muốn nhưng bạn gọi nó bằng mã như R.color.yourId.

BIÊN TẬP

Bởi vì getResources().getColor()bị phản đối, sử dụng getWindow().getDecorView().setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.main_activity_background_color)); thay thế.


8

Bạn có thể sử dụng điều này để gọi các màu Android được xác định trước:

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

Nếu bạn muốn sử dụng một trong các màu tùy chỉnh của riêng mình, bạn có thể thêm màu tùy chỉnh của mình vào chuỗi String và sau đó sử dụng màu bên dưới để gọi nó.

element.setBackgroundColor(R.color.mycolour);

Tuy nhiên, nếu bạn muốn đặt màu trong layout.xml của mình, bạn có thể sửa đổi và thêm phần bên dưới vào bất kỳ phần tử nào chấp nhận nó.

android:background="#FFFFFF"

Nếu tôi sử dụng kỹ thuật đầu tiên, tôi nhận được một cảnh báo rằng nó thực sự nên được truy cập như thế này: getResource (). GetColor (android.R.color.black);

3

Để có được chế độ xem gốc được xác định trong tệp xml của bạn, không có thanh hành động, bạn có thể sử dụng:

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

Vì vậy, để thay đổi màu thành màu trắng:

root.setBackgroundResource(Color.WHITE);

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

đã làm cho tôi. cảm ơn bạn.


Câu trả lời này nằm trong hàng đánh giá Bài viết chất lượng thấp vì đây chỉ là mã không có lời giải thích. Vui lòng cải thiện câu trả lời của bạn bằng cách giải thích mã của bạn làm gì và cách nó trả lời câu hỏi. Xin vui lòng đọc lời khuyên này về việc trả lời các câu hỏi lập trình một cách hữu ích .
Adi Inbar

2
Thật buồn cười là điều này rõ ràng đặt nền thành màu xanh và không phải màu trắng như yêu cầu.
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"));
        }
    });
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.