TextInputLayout을 사용할 때 EditText 힌트 색상 변경


146

TextInputLayout디자인 라이브러리에서 새로운 것을 사용하고 있습니다. 플로팅 레이블의 색상을 표시하고 변경할 수 있습니다. 불행히도 실제 EditText힌트는 항상 흰색입니다.

XML, 스타일 및 프로그래밍 방식으로 hintColor를 변경하려고 시도했지만 또한 사용하여 시도 android.support.v7.widget.AppCompatEditText 했지만 EditText힌트는 항상 흰색으로 표시됩니다.

여기 내 XML 내입니다 TextInputLayoutEditText

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android.support.design:hintTextAppearance="@style/GreenTextInputLayout">


    <EditText

    android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/city"
        android:textColorHint="@color/black"
        android:hint="@string/city" />

</android.support.design.widget.TextInputLayout>

그리고 여기에 내가 사용하는 스타일이 있습니다 TextInputLayout(나는 hintTextColor속성을 검은 색으로 만들려고했지만 아무것도하지 않았습니다).

<style name="GreenTextInputLayout" parent="@style/TextAppearance.AppCompat">
    <item name="android:textColor">@color/homestory_green</item>
</style>

나는 같은 오류에 직면하고있다. 힌트는 editText를 터치 한 후 처음에는 항상 "WHITE"색상이며, 사용자가 정의한 색상을 사용합니다. 여전히 수정 사항을 검색 중입니다.
ch3tanz 5

@Ali Kabiri의 답변을 사용해 보셨습니까? 내 것보다 더 나은 솔루션 인 것 같습니다. 내 프로젝트에 매우 구체적이었습니다.
SamIAmHarris 2016 년

나는 내 사용자 정의 테마를 가지고 있으며 모든 색상은
style.xml에

답변:


164

android:textColorHint애플리케이션 테마에서 정의하십시오 .

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>

    <item name="android:textColorHint">@color/secondary_text</item>
</style>

출처


@TheHungryAndroider 테마를 편집 텍스트를 사용하는 acitvity의 테마로 설정 했습니까?
mbelsky

1
그것은 나를 위해 작동하지만 힌트의 색상은 조각 및보기 생성시 EditText설정되지 않습니다. 뷰의 모든 입력에 설정할 힌트 색상을 클릭해야합니다 ... 아직 그 해결책을 찾지 못했습니다 ( requestFocus()performClick()불행히도 트릭을 수행하지 마십시오).
flawyte

1
속성으로 사용될 때 작동 : <EditText android : inputType = "textMultiLine"android : lines = "4"android : gravity = "top | right"android : layout_width = "fill_parent"android : layout_height = "match_parent"android : hint = " 힌트 텍스트 "android : textColorHint ="# 919389 "/>
masoud Cheragee 2016 년

75

창조하다 style.xml에서 사용자 정의 스타일

<style name="EditTextHint" parent="TextAppearance.AppCompat">
    <item name="colorAccent">@android:color/white</item>
    <item name="android:textColorHint">@color/BackgroundtWhiteColor</item>
    <item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
    <item name="colorControlActivated">@color/your color</item>
    <item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
</style>

그런 다음 레이아웃 xml 파일에서 같이 테마 속성을

 <android.support.design.widget.TextInputLayout
            android:theme="@style/EditTextHint"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

      <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

</android.support.design.widget.TextInputLayout>

이것이 효과가 있기를 바랍니다


4
"클래스 EditText 팽창 오류"를 표시합니다. 도와주세요 !
Mohit Khaitan

@Coder 그가 추가 한 속성 중 일부는 21+ 이상입니다
Mr.O

49

텍스트 편집에 textColorHint 속성 추가

android:textColorHint="#F6F6F6"

또는 원하는 색상


41

같은 문제가 발생했습니다. 이 줄을 부모 테마 에 넣음으로써 해결되었습니다 .

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/ColorPrimaryDark</item>
    <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
    <item name="colorAccent">@color/AccentColor</item>
    <item name="android:windowTranslucentStatus">true</item>

    <item name="android:textColorHint">@color/BackgroundtWhiteColor</item>
    <item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
    <item name="colorControlActivated">#ff0000</item>
    <item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>
    <!-- Customize your theme here. -->
</style>

이걸 넣으면

<item name="android:textColorHint">@color/BackgroundtWhiteColor</item>
<item name="colorControlNormal">@color/BackgroundtWhiteColor</item>
<item name="colorControlActivated">#ff0000</item>
<item name="colorControlHighlight">@color/BackgroundtWhiteColor</item>

별도의 스타일로 TextInputLayout 또는 Edittext에 적용하면 표시되지 않습니다. 당신은 가질 응용 프로그램의 상위 테마에 배치 할 수 있습니다.


3
이 위젯을 사용하여 앱에서 여러 입력 스타일을 가질 수 없다는 것은 정말 실망 스럽지만, 당신이 옳다고 말할 수있는 한. : /
Turnsole

4
글쎄, 그것은 전체 응용 프로그램에 그것을 가질 필요는 없습니다. 이 테마는 매니페스트 파일에서 하나의 활동에만 적용 할 수 있습니다. 그리고 나머지 활동을위한 또 다른 테마를 만드십시오.
RexSplode

23

문제의 원인이 무엇인지 잘 모르겠 으므로이 코드가 완벽하게 작동합니다. 올바른 xml 네임 스페이스 ( xmlns) 를 사용하는 것과 관련이 있다고 생각합니다 . XML 네임 스페이스 속성없이 android.support.design 사용이 지원되는지 확실하지 않습니다. 아니면 그것은textColorHint EditText 자체에서 사용 속성 있습니다.

나열한 것:

<android.support.design.widget.TextInputLayout
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    app:hintTextAppearance="@style/GreenTextInputLayout">

    <android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="test"
        android:inputType="text" />
</android.support.design.widget.TextInputLayout>

스타일:

<style name="GreenTextInputLayout" parent="@android:style/TextAppearance">
    <item name="android:textColor">#00FF00</item>
</style>

2
이것은 여전히 ​​내가 가진 것처럼 작동합니다. 내가 겪고있는 문제는 사용자가 EditText를 터치하기 전에 EditText 색상이 흰색이라는 것입니다. 사용자가 EditText를 터치하면 TextInputLayout 레이블이 녹색이며 정상적으로 작동합니다.
SamIAmHarris 2016 년

여기 @ user3520299에서 동일한 문제가 발생했습니다.
AhmedW

부모보기에는 문제를 일으키는 테마 세트가 있기 때문에 광산은 독특한 경우였습니다. 하지만 그 테마 하나를 제거한 후에는 제가
작성한 코드가 제대로

1
이것은 부동 힌트에는 적용되지만 빈 EditText 컨트롤 내부의 힌트에는 적용되지 않습니다. 이를 위해 당 응용 프로그램 테마 업데이트 @ mbelsky의 대답
리처드 르 Mesurier

그건 그렇고, 기본 app : hintTextAppearance 스타일은입니다 @style/TextAppearance.Design.Hint, 그래서 당신은 또는 parent대신에 그것을 사용하고 싶을 수도 있습니다@android:style/TextAppearance@style/TextAppearance.AppCompat
rockgecko

19

아래 코드는 저에게 효과적이지만 모든 컨트롤 색상에 영향을 미칩니다.

 <!-- In your style.xml file -->
    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
            <!--EditText hint color-->
            <item name="android:textColorHint">@color/default_app_white</item>
           <!-- TextInputLayout text color-->
            <item name="colorControlActivated">@color/default_app_green</item>
            <!-- EditText line color when EditText on-focus-->
            <item name="colorControlHighlight">@color/default_app_green</item>
            <!-- EditText line color when EditText  in un-focus-->
            <item name="colorControlNormal">@color/default_app_white</item>
        </style>

이를 수락해야합니다. 중요한 각 요소에 어떤 속성이 사용되는지 보여줍니다.
Richard Le Mesurier

15

EditText를 보유하는 TextInputLayout에서 다음을 추가하십시오.

android:textColorHint="someColor"

14

많은 답변이 있지만 이것에 대한 줄만 있으면됩니다.

android : textColorHint = "# 000000"

    <EditText
        android:id="@+id/edtEmail"
        android:textColorHint="#000000"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

10

android : textColorHint = "# FFFFFF"는 가끔 작동하지만 가끔 작동하지 않습니다. 나를 위해 아래 솔루션이 완벽하게 작동합니다.

아래 코드는 XML 파일에서 작동하며 TextLabel 테마는 style.xml에 정의되어 있습니다.

 <android.support.design.widget.TextInputLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:theme="@style/MyTextLabel">

     <EditText
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:hint="Floating Label"
         android:id="@+id/edtText"/>

 </android.support.design.widget.TextInputLayout>

스타일 폴더 텍스트 레이블 코드

 <style name="MyTextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/Color Name</item> 
<!--The size of the text appear on label in false state -->
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>

false 상태에서 레이블의 색상을 변경하려면 colorAccent, colorControlNormal 및 colorControlActivated가 필요하지 않습니다.


10

당신은 android:textColorHint="@color/color_black"내부에서 사용할 수 있습니다 TextInputlayout그것은 나를 위해 일했다.

<android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/dp_10"
                android:textColorHint="@color/color_black"
                app:hintTextAppearance="@style/TextLabel">

                <EditText
                    android:id="@+id/et_state"
                    style="@style/profile_editTextStyle"

                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/billingState"
                    android:text="@string/billingState"
                     />
            </android.support.design.widget.TextInputLayout>

8

이것에 따르면 : https://code.google.com/p/android/issues/detail?id=176559

이 시도:

<android.support.design.widget.TextInputLayout
    android:textColorHint="#A7B7C2"
    android:layout_width="match_parent"
    android:layout_height="50dp">

    <EditText
        android:id="@+id/et_confirm_password"
        android:textColor="@android:color/black"
        android:hint="Confirm password"
        android:inputType="textPassword"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
 </android.support.design.widget.TextInputLayout>

23.1.1에서 작동합니다


6

으로 재료 구성 요소 라이브러리 당신은 사용자 정의 할 수 있습니다 TextInputLayout사용하여 힌트 텍스트 색상 :

  • 레이아웃에서 :

    • app:hintTextColor attribute : 레이블이 접 히고 텍스트 필드가 활성화 된 경우 레이블의 색상
    • android:textColorHint 속성 : 다른 모든 텍스트 필드 상태의 레이블 색상 (휴식 및 비활성화 등)

다음과 같은 것 :

<com.google.android.material.textfield.TextInputLayout
     app:hintTextColor="@color/mycolor"
     android:textColorHint="@color/text_input_hint_selector"
     .../>

여기에 이미지 설명을 입력하십시오여기에 이미지 설명을 입력하십시오


5

상위 뷰에 EditText를 흰색으로 만드는 타사 라이브러리의 스타일이있는 것 같습니다.

android:theme="@style/com_mixpanel_android_SurveyActivityTheme"

일단 이것을 제거하면 모든 것이 잘 작동했습니다.


5

이 도움이 될 수도 있습니다 시도

      edittext.addTextChangedListener(new  TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "onTextChanged", 2000).show();;
            //newuser.setTextColor(Color.RED);
            edittext.setHintTextColor(Color.RED);

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "afterTextChanged", 2000).show();;

        }
    });

왜 onTextChanged 리스너에 넣었습니까?
user25

5

늦었지만이 같은 사람을 도울 수 있습니다

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="30dp"
        android:layout_marginStart="30dp"
        android:textColorHint="#8cffffff">

        <android.support.v7.widget.AppCompatEditText
            android:id="@+id/email_edit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/security_email"
            android:inputType="textEmailAddress"
            android:textColor="@color/white"
            app:backgroundTint="#8cffffff" />
    </android.support.design.widget.TextInputLayout>

4
<item name="colorAccent">@android:color/black</item>

테마 내에서 원하는 색상으로 색상을 변경하면 EditText 줄, 커서 및 힌트가 변경됩니다.

또는 style.xml에이 스타일을 포함시킬 수도 있습니다.

<style name="TextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@android:color/black</item>
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@android:color/black</item>
    <item name="colorControlNormal">@android:color/black</item>
    <item name="colorControlActivated">@android:color/black</item>
</style>

그런 다음 TextInputLayout 안에 다음과 같이 넣을 수 있습니다

<android.support.design.widget.TextInputLayout
            android:id="@+id/input_layout_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/TextLabel">
            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:drawableLeft="@drawable/password"
                android:drawableStart="@drawable/password"
                android:maxLines="1"
                android:hint="password"
                android:inputType="textWebPassword" />

        </android.support.design.widget.TextInputLayout>

3
        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <EditText
                android:id="@+id/name"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Name"
                android:textColor="@color/black"
                android:textColorHint="@color/grey"/>
        </android.support.design.widget.TextInputLayout>

textColorHint를 사용하여 EditText의 힌트 색상으로 원하는 색상을 설정하십시오. 문제는 EditText의 힌트가 무언가를 입력 할 때가 아니라 EditText가 멋진 애니메이션과 함께 포커스를 얻으면 즉시 사라진다는 것입니다. 포커스를 멀리두고 EditText로 전환하면이를 명확하게 알 수 있습니다.


3

설명서에서 :

힌트는 EditText 대신 TextInputLayout에 설정해야합니다. XML의 하위 EditText에 힌트가 지정된 경우 TextInputLayout이 여전히 올바르게 작동 할 수 있습니다. TextInputLayout은 EditText의 힌트를 플로팅 레이블로 사용합니다. 그러나 나중에 힌트를 수정하기위한 호출은 TextInputLayout의 힌트를 업데이트하지 않습니다. 의도하지 않은 동작을 피하려면 EditText 대신 TextInputLayout에서 setHint (CharSequence) 및 getHint ()를 호출하십시오.

설정 시도 android:hintapp:hintTextColorTextInputLayout대신에TextInputEditText .



1
 <android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout_passdword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColorHint="#d3d3d3">
        <EditText
            android:id="@+id/etaddrfess_ciwty"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/transparent"
            android:bottomLeftRadius="10dp"
            android:bottomRightRadius="50dp"
            android:fontFamily="@font/frutiger"
            android:gravity="start"
            android:hint="@string/address_city"
            android:padding="10dp"
            android:textColor="#000000"
            android:textColorHint="#000000"
            android:textSize="14sp"
            android:topLeftRadius="10dp"
            android:topRightRadius="10dp" />
    </android.support.design.widget.TextInputLayout>``

0

아래 코드를 사용해보십시오 :

밝은 색상은 흰색입니다.

 <android.support.design.widget.TextInputLayout
        android:id="@+id/input_layout_mobile"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/TextStyle"
        >

        <EditText
            android:id="@+id/input_mobile"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:singleLine="true"
            android:drawablePadding="14dp"
            android:drawableLeft="8dp"
            android:textColor="@color/white"
            android:hint="Mobile" />
    </android.support.design.widget.TextInputLayout>

스타일 : TextStyle

    <style name="TextStyle" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/white</item>
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/white</item>
    <item name="colorControlNormal">@color/white</item>
    <item name="colorControlActivated">@color/white</item>
     </style>

0

이 비슷한 문제와 필요한 솔루션에 대한 나의 경험은 다음과 같습니다.

요구 사항 :

  • 사용자 정의를 작성 TextInputEditText해야합니다 (일부는 투명해야하고 일부는 그렇지 않아야하며 다양한 이벤트에 사용자 정의 색상을 사용해야 함)

직면 한 문제 :

  • android:textColorHint 필요에 따라 작동하지 않습니다.

솔루션이 시도했지만 실패했습니다.

  • 사용 된 android:textColorHint스타일과 적용 TextInputEditText. 결과 또는 차이가 없습니다.
  • 설정 android:textColorHint응용 프로그램의 테마에 적용. 도움이되었지만 이제는 전체 응용 프로그램으로 설정되었습니다. (요구 사항에 부합하지 않음)

많은 RnD 후, 발견 된 가장 좋은 해결책은 우리가 테마 를 적용 TextInputLayout하거나 오히려 부모의 견해에만 적용 해야한다고 설명 한 기사에서 발견되었습니다. 스타일TextInputEditText 또는 부모보기로.

우리가 어떻게 잘못 가고 있는지 알려주는 TextInputLayout 적절한 테마 를 확인하십시오 .


0

테마 속성을 TextInputLayout으로 설정하려고 할 때 테마는 원치 않는 자식보기 edittext에도 적용되었습니다.

그래서 나를 위해 일한 해결책은 TextInputLayout의 "app : hintTextAppearance"속성에 사용자 정의 스타일을 추가하는 것이 었습니다.

styles.xml에서 다음 스타일을 추가하십시오.

<style name="TextInputLayoutTextAppearance" parent="TextAppearance.AppCompat">
    <item name="android:textColor">@color/text_color</item>
    <item name="android:textSize">@dimen/text_size_12</item>
</style>

이 스타일을 TextInputLayout의 "app : hintTextAppearance"속성에 다음과 같이 적용하십시오.

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/mobile_num_til"
        android:layout_width="0dp"
        android:layout_height="@dimen/dim_56"
        app:layout_constraintStart_toStartOf="@id/title_tv"
        app:layout_constraintEnd_toEndOf="@id/title_tv"
        app:layout_constraintTop_toBottomOf="@id/sub_title_tv"
        android:layout_marginTop="@dimen/dim_30"
        android:padding="@dimen/dim_8"
        app:hintTextAppearance="@style/TextInputLayoutTextAppearance"
        android:background="@drawable/rect_round_corner_grey_outline">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/mobile_num_et"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="@string/mobile_number"
            android:gravity="center_vertical"
            android:background="@android:color/transparent"/>

    </com.google.android.material.textfield.TextInputLayout>

0

새로운 androidx 머티리얼 디자인 라이브러리 com.google.android.material 를 사용하는 경우 colorstatelist를 사용하여 다음과 같이 포커스, 호버링 및 기본 상태에서 힌트 텍스트 색상을 제어 할 수 있습니다. (영감 )

에서 res/color/text_input_box_stroke.xml다음과 같이 넣어 뭔가 :

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#fcc" android:state_focused="true"/>
    <item android:color="#cfc" android:state_hovered="true"/>
    <item android:color="#ccf"/>
</selector>

그런 다음 styles.xml당신은 넣을 것입니다 :

<style name="MtTILStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense">
    <item name="boxStrokeColor">@color/text_input_box_stroke</item>
    <item name="hintTextColor">@color/text_input_box_stroke</item>
</style>

마지막으로 실제 스타일을 나타내십시오. TextInputLayout 어떤 이유로 android:textColorHint힌트의 기본 텍스트 색상 을 설정해야합니다 .

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/my_layout_id"
    style="@style/LoginTextInputLayoutStyle"
    android:textColorHint="#ccf"
    ...

0

머티리얼 디자인 라이브러리를 사용하는 경우 현재 버전을 사용하고 있습니다

구현 'com.google.android.material : material : 1.3.0-alpha01'

1-TextInputLayout이 휴식 중일 때 색상을 설정합니다.

<item name="android:textColorHint">@color/your_color_hint</item>

2-TextInputLayout이 플로팅 / 포커스 / 탭될 때 색상을 설정합니다.

<item name="hintTextColor">@color/your_color_floating_hint</item>

3-TextInputLayout 아래 줄의 색을 설정하십시오.

<item name="boxStrokeColor">@color/TextViewColor_line</item>

4-TextInputLayout에서 오류의 색상을 설정하십시오.

<item name="boxStrokeErrorColor">@color/colorPrimary</item>

0

라벨 색상을 위로 들어 올릴 때만 색상을 변경하고 싶었습니다. 그러나 설정 textColorHint하면 모든 상태에서 색상이 변경됩니다. 그래서 이것은 나를 위해 일했습니다 :

   <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
       ...
        <item name="colorControlActivated">@color/colorPrimary</item>
       ...
    </style>

입력에 초점을 맞출 때 색상이 변경됩니다.

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