안드로이드 레이아웃 xml로 작업하는 동안 backgroundTint
attribute를 발견했습니다. 나는 그것이 무엇인지 이해하지 못한다.
또한 무엇 backgroundTintMode
입니까 ??
안드로이드 레이아웃 xml로 작업하는 동안 backgroundTint
attribute를 발견했습니다. 나는 그것이 무엇인지 이해하지 못한다.
또한 무엇 backgroundTintMode
입니까 ??
답변:
android:background
, android:backgroundTint
및 의 다양한 조합을 테스트했습니다 android:backgroundTintMode
.
android:backgroundTint
android:background
와 함께 사용할 때 의 리소스에 색상 필터를 적용합니다 android:backgroundTintMode
.
결과는 다음과 같습니다.
추가로 실험하려는 경우 코드는 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:background="#37AEE4"
android:text="Background" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:backgroundTint="#FEFBDE"
android:text="Background tint" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:background="#37AEE4"
android:backgroundTint="#FEFBDE"
android:text="Both together" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:background="#37AEE4"
android:backgroundTint="#FEFBDE"
android:backgroundTintMode="multiply"
android:text="With tint mode" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:textSize="45sp"
android:text="Without any" />
</LinearLayout>
android:background
(가)에 대한 속성을 설정해야합니다 android:backgroundTint
에 볼 수 있도록 TextView
. 의 경우 Button
이미 프레임 워크에 의해 설정된 일종의 배경 / 색상이 있다고 생각합니다.
이 backgroundTint
속성은 배경에 색조 (음영)를 추가하는 데 도움이됩니다. 동일한 색상 값을 다음 형식으로 제공 할 수 있습니다."#rgb", "#argb", "#rrggbb", or "#aarrggbb".
반면 backgroundTintMode
에 배경 색조를 적용하는 데 도움이됩니다. src_over, src_in, src_atop,
etc 와 같은 상수 값이 있어야합니다 .
사용할 수있는 상수 값에 대한 명확한 아이디어를 얻으려면 이것을 참조하십시오 . backgroundTint
다양한 속성과 함께 속성 및 설명을 검색 할 수 있습니다.
이미 다뤄 졌기 때문에 차이점에 대해 많이 강조하지는 않겠지 만 아래 사항에 유의하십시오.
android:backgroundTint
android:backgroundTintMode
API 21에서만 사용할 수 있습니다.android:background
기본 색상을 변경하려는 경우을 사용 android:backgroundTint
하여 음영을 추가 할 수 있습니다 .예
<Button
android:layout_width="50dp"
android:layout_height="wrap_content"
android:background="@android:drawable/ic_dialog_email" />
<Button
android:layout_width="50dp"
android:layout_height="wrap_content"
android:background="@android:drawable/ic_dialog_email"
android:backgroundTint="@color/colorAccent" />
다른 예시
당신의 악센트 색상을 변경하려고하면 FloatingActionButton
사용 android:background
이 이미 활용 있기 때문에 인 변화를 통지하지 않습니다 당신을 app:srcCompat
이렇게하려면 위해서는, 당신은 사용할 수있는 android:backgroundTint
대신
배경 색조를 적용하는 데 사용되는 혼합 모드입니다.
배경에 적용 할 색조입니다. 형태, 색상 값이어야의
#rgb
,#argb
,#rrggbb
, 또는#aarrggbb
.이 유형의 값을 포함하는 리소스 ( "@ [package :] type : name"형식) 또는 테마 속성 ( "? [package :] [type :] name"형식)에 대한 참조 일 수도 있습니다. .
android:backgroundTint
하지 않고 사용할android:background
때이 두 번째 TextView는 아무것도 변경하지 않습니다. 하지만android:backgroundTint
Button에서 시도해 보면 버튼의 색상이 제가 설정 한 backgroundTint와 같은 색상으로 보입니다. 이러한 경우를 설명해 주시겠습니까?