2012-01-22 30 views
20

Tôi muốn thay đổi màu nền của Chế độ xem chính (không phải Nút hoặc Chế độ xem văn bản) chỉ là nền thực thường là màu đen ... Tôi có mã này:Android: Thay đổi màu nền của hoạt động (Chế độ xem chính)

view.setBackgroundColor(0xfff00000); 

Đây là một trong OnClickListener, nhưng nó chỉ thay đổi nền của Nút ... Xin hãy giúp tôi, cảm ơn rất nhiều!

+0

Nhìn vào câu trả lời của tôi ở đây http://stackoverflow.com/a/12259787/592042 – David

Trả lời

51

Hãy thử tạo một phương pháp trong Activity một cái gì đó của bạn như ...

public void setActivityBackgroundColor(int color) { 
    View view = this.getWindow().getDecorView(); 
    view.setBackgroundColor(color); 
} 

Sau đó gọi nó từ OnClickListener của bạn đi qua trong bất cứ màu nào bạn muốn.

+0

Yess !! Nó hoạt động, cảm ơn bạn! – moritzg

+0

Vui vì tôi có thể giúp. – Squonk

+0

Tôi mở một giao diện hộp thoại bằng một hộp văn bản. Tôi muốn thay đổi màu sắc khi tôi nhấp "OK". Tôi đã thử đoạn mã này và nó không hoạt động. Có phải vì tầm nhìn của tôi là ngay bây giờ trên giao diện hộp thoại chứ không phải là chính hoạt động chính? – Naveen

0

nếu bạn đặt mã đầy đủ của mình ở đây để tôi có thể giúp bạn. nếu bạn đặt trình lắng nghe trong XML và gọi màu nền đã đặt trên Chế độ xem để nó sẽ thay đổi màu nền của chế độ xem nghĩa là nó là U botton để đặt người nghe ur vào hoạt động ur và sau đó thay đổi màu của chế độ xem của bạn

8

i don Không biết nếu đó là câu trả lời cho câu hỏi của bạn nhưng bạn có thể thử thiết lập màu nền trong bố cục xml như thế này. Nó rất dễ dàng, nó luôn luôn làm việc

<?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="0xfff00000" 

    > 


<TextView 

    android:id="@+id/text_view" 

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello" 

    /> 



</LinearLayout> 

Bạn cũng có thể làm những việc lạ mắt hơn với hình nền bằng cách tạo ra một tập tin nền xml với gradient mà là mát mẻ và bán trong suốt, và tham khảo nó để sử dụng khác xem ví dụ dưới đây:

bố trí background.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape> 
     <gradient 
      android:angle="90" 
      android:startColor="#f0000000" 
      android:endColor="#ff444444" 
      android:type="linear" /> 
    </shape> 
</item> 
</selector> 

bố trí của bạn

<?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="@layout/background" 


    > 


<TextView 

    android:id="@+id/text_view" 

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:text="@string/hello" 

    /> 



</LinearLayout> 
+0

Không, tôi muốn nó hoạt động vì vậy nếu bạn nhấn một nút nó thay đổi ngay lập tức ... – moritzg

+0

ahh đã nhận nó ngay bây giờ ;-)) – youssoua

+0

Thậm chí nếu điều này không trả lời câu hỏi OPs , nó đã trả lời tôi. +1 – Jim

1

Bạn cũng có thể thử và cung cấp một Id cho bố cục chính và thay đổi nền của nó thông qua thao tác cơ bản và truy xuất. Ví dụ:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/hello" 

nào sau đó có thể được theo sau bằng cách truy cập thông qua R.id.hello .... Khá cơ bản và tôi hy vọng điều này sẽ giúp :)

6

Chỉ cần thêm dưới đây một mã dòng trong XML của hoạt động tương ứng:

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

nó sẽ giúp bạn chắc chắn.

3

Phương pháp đầu tiên

View someView = findViewById(R.id.randomViewInMainLayout);// get Any child View 

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

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

Phương pháp thứ hai

Thêm dòng này sau khi setContentView (...);

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

Phương pháp thứ ba

màu bộ nền cho rootView

<?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/rootView" 
</LinearLayout> 

Thing quan trọng

rootView.setBackgroundColor(0xFF00FF00); //after 0x the other four pairs are alpha,red,green,blue color. 
Các vấn đề liên quan