Android 레이아웃 요소의 배경색 설정


198

Android UI 디자인의 슬라이드 세트에서 활동 디자인을 다소 복제하려고합니다 . 그러나 나는 매우 간단한 작업에 문제가 있습니다.

이미지와 같이 레이아웃을 만들었으며 헤더는 TextView에 있습니다 RelativeLayout. 이제의 배경색을 변경하고 싶지만 RelativeLayout방법을 알 수 없습니다.

XML 파일 android:backgroundRelativeLayout태그에서 속성을 설정할 수 있다는 것을 알고 있지만 무엇으로 설정해야합니까? 여러 곳에서 사용할 수있는 새로운 색상을 정의하고 싶습니다. 그것은인가 drawable또는은 string?

또한 Eclipse Android UI 디자이너에서 누락되어야하는 매우 간단한 방법이있을 것으로 기대합니까?

현재 몇 번의 클릭만으로 수행되는 활동이어야하므로 약간 실망했습니다. 어떤 도움이라도 대단히 감사합니다. :)

안드로이드 활동 디자인


28
오른쪽에 그래프를 그리는 데 어떤 소프트웨어를 사용 했습니까?
lucas

8
@ lucas : 질문에서 언급했듯이 다이어그램을 그리지 않았습니다 .Android UI 디자인의 슬라이드 세트에서 나왔습니다. 질문의 링크를 참조하십시오.
Bjarke Freund-Hansen

답변:


280

일반적으로 inside로 지정된 간단한 색상 리소스를 사용할 수 있습니다 res/values/colors.xml.

<color name="red">#ffff0000</color>

를 통해 이것을 사용하십시오 android:background="@color/red". 이 색상은 텍스트 색상과 같은 다른 곳에서도 사용할 수 있습니다. 동일한 방식으로 XML로 참조하거나을 통해 코드로 가져 오십시오 getResources().getColor(R.color.red).

드로어 블 리소스 를 배경으로 사용할 수도 있습니다. android:background="@drawable/mydrawable"9patch 드로어 블, 일반 비트 맵, 모양 드로어 블 등을 의미합니다.


6
고마워요. 내가 이것을 읽어야 할 참조를 알려 주시겠습니까?
Bjarke Freund-Hansen

6
Uhh 실제로 : 아니요. 방금 문서를 검색했는데, 이것은 표준 안드로이드 용이지만 실제로 문서화되지 않은 것 같습니다. 개발 사이트의 튜토리얼이나 API 샘플은 이것을 사용하지 않습니다. 일부 기능에 관해서는 안드로이드 문서가 다소 부족합니다. 외부 자습서에서 실수로 선택했다고 생각합니다. 일반적으로 API 샘플과 샘플 프로젝트를 찾아 보는 것이 좋습니다. ANDROID_SDK\samples폴더 내에서 코드를 찾을 수 있습니다 (다양한 Android 버전의 경우). 전체 API 샘플 앱은 모든 에뮬레이터 인스턴스에 사전 설치되어 제공됩니다.

2
또한 UI 디자이너를 확인했습니다. 쉽게 찾을 수있는 것이 없습니다. 그러나 어쨌든 XML로 손으로 글을 쓰는 것이 좋습니다. 디자이너는 최근에 많이 향상되었지만 여전히 내 의견으로는 사용할 수 없습니다. 일부 옵션은 제한되어있을뿐만 아니라 실제 장치에서 레이아웃이 완전히 다르게 보일 수 있습니다 (특히 참조 드로어 블 리소스를 사용하는 경우. 스케일이 제대로 조정되지 않았거나 경험상 전혀 표시되지 않음) . 장치 또는 에뮬레이터에서 레이아웃을 테스트하십시오.

1
일부 "기본"색상의 경우 다음 구문을 사용할 수 있습니다. android : background = "@ android : color / white"
dalf

1
getResources (). getColor ()는 더 이상 사용되지 않습니다.
Rohit Bandil

90

위의 답변은 훌륭합니다. 원한다면 프로그래밍 방식으로 갈 수도 있습니다.

먼저 레이아웃에 ID가 있어야합니다. +idres / layout / *. xml에 다음 줄 을 작성하여 추가하십시오 .

<RelativeLayout ...
...
android:id="@+id/your_layout_id"
...
</RelativeLayout>

그런 다음 Java 코드에서 다음을 변경하십시오.

RelativeLayout rl = (RelativeLayout)findViewById(R.id.your_layout_id);
rl.setBackgroundColor(Color.RED);

이와는 별도로 colors.xml에 색상이 정의되어 있으면 프로그래밍 방식으로 수행 할 수도 있습니다.

rl.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));

24
동적으로 원한다면 XML을 사용할 수 없다고 생각합니다.
기예르모 구티에레스

1
상태 플래그에 따라 런타임에 변경해야하기 때문에 +1; Color.TRANSPARENT 상수를 사용하여 원래 색상을 다시 얻을 수도있었습니다.
Zac

10
@ BjarkeFreund-Hansen 그는 다른 답변을 인정하고이 프로그래밍 방식의 솔루션을 제공합니다. 공감할 가치가 없습니다.
Anubian Noob

4
@ BjarkeFreund-Hansen, 문제는 색상을 정의하는 방법이 아닌 배경을 올바르게 설정하는 방법입니다. 질문이 있다면 어떻게해야합니까? 나는 "당신도 같이 갈 수있다"고 인정했다. 그래서 그는 갈지 모른다. 또한 이미 보았 듯이 다른 사람들을 도울 수 있습니다. 너는 할수 있니 ??
안드로이드 킬러

7
플러스 @ BjarkeFreund-Hansen에서 빼기 하나를 보완하기 위해 하나
Rahul

42

색상에 대해 android:background="#DC143C"또는 다른 RGB 값을 사용할 수 있습니다 . 여기에 언급 된 대로이 방법을 사용하는 데 아무런 문제가 없습니다.


5
-1 색상 값을 하드 코딩하지 않고 여러 곳에서 사용할 수있는 리소스로 정의하기 때문에 질문에 "여러 곳에서 사용할 수있는 새로운 색상을 정의하고 싶습니다"라고 명시 적으로 작성했기 때문입니다.
Bjarke Freund-Hansen

6
@ GMsoF : 오 작동하지만 질문에 대답하지 않습니다.
Bjarke Freund-Hansen

21

그만큼

res/values/colors.xml.

<color name="red">#ffff0000</color>
android:background="@color/red"

예는 나를 위해 작동하지 않았지만

android:background="#(hexidecimal here without these parenthesis)"

상대 레이아웃 요소에서 속성으로 나를 위해 일했습니다.


10
색상 태그를 자원 태그로 감싸는 것을 잊었습니까?
elimirks

19

색상을 빠르게 변경하고 싶을 때 (16 진수를 기억하지 않은 경우) android에는 다음과 같이 몇 가지 사전 설정 색상이 있습니다.

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

선택할 수있는 15 가지 색상이 있으며 빠르게 테스트 할 수 있으며 추가 파일을 설정할 필요가 없습니다.

values ​​/ colors.xml 파일을 설정하고 위에서 설명한대로 16 진을 사용하면 여전히 작동합니다.


4

가능한 4 가지 방법을 사용하십시오.

1. 코 틀린

val ll = findViewById<LinearLayout>(R.id.your_layout_id)
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white))

2. 데이터 바인딩

<LinearLayout
    android:background="@{@color/white}"

또는 더 유용한 진술

<LinearLayout
    android:background="@{model.colorResId}"

3. XML

<LinearLayout
    android:background="#FFFFFF"

<LinearLayout
    android:background="@color/white"

4. 자바

LinearLayout ll = (LinearLayout) findViewById(R.id.your_layout_id);
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white));

2

Android Studio 2.1.2 (또는 이전 버전)에서는 색상환에서 선택할 수 있습니다.

Android Studio의 컬러 휠

내 레이아웃에 다음을 추가하여 이것을 얻었습니다.

android:background="#FFFFFF"

그런 다음 FFFFFF 색상을 클릭하고 나타난 전구를 클릭했습니다.


1

코 틀린

linearLayout.setBackgroundColor(Color.rgb(0xf4,0x43,0x36))

또는

<color name="newColor">#f44336</color>

-

linearLayout.setBackgroundColor(ContextCompat.getColor(vista.context, R.color.newColor))

0

무엇보다 정적 인 답변입니다. 나는 역동적 인 답변을 줄 것이라고 생각했습니다. 동기화해야 할 두 파일 foo.xml은 레이아웃에 상대적 이며 이것 activity_bar.java에 해당하는 Java 클래스에 해당합니다 R.layout.foo.

에서는 foo.xml전체 레이아웃 ID를 설정합니다

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/foo" .../>

그리고 activity_bar.java색상 을 설정하십시오 onCreate():

public class activity_bar extends AppCompatActivty {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.foo);

            //Set an id to the layout
        RelativeLayout currentLayout = 
                    (RelativeLayout) findViewById(R.id.foo);

        currentLayout.setBackgroundColor(Color.RED);
        ...
    }
    ...
}

이게 도움이 되길 바란다.

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