프로그래밍 방식으로 활동의 배경색을 흰색으로 설정하는 방법은 무엇입니까?


답변:


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는 "자원 ID 대신 해결 된 색상을 전달해야합니다. 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로 배경색 변경


좋은 지적이야 어쨌든, 내가 준 링크는 그 질문에 대한 대답을 아주 쉽게 할 수 있습니다.
I822018 년

나는 당신이 나에게 올바른 색상 값을 제공한다고 생각하지 않습니다! 나는 #FFFFFF와 함께 그것을 얻었다
SJS

이것은 XML로하고 싶고 Google 검색을 통해 여기에 도착하려는 사람들에게 좋은 대답입니다.
Kacy

9

당신의 onCreate()방법에서 :

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

또한 값 폴더에 새 XML 파일이라는 새 폴더를 추가 color.xml하고 새 색 속성을 할당해야합니다.

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
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"));
        }
    });
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.