텍스트 속성 아래 EditText 밑줄


108

편집 텍스트 아래의 파란색을 변경하고 싶습니다. 어떤 속성인지 모르겠습니다.

다른 배경색을 사용해 보았지만 작동하지 않았습니다.

아래 이미지를 첨부했습니다.

여기에 이미지 설명 입력


이것은 특정 API 레벨 / 전화에서 사용할 수있는 EditText의 배경입니다. 즉, 앱이 다른 휴대폰에서 실행되는 경우 다른 배경이 표시 될 수 있습니다.
Sherif elKhatib 2014 년

당신에게 사용자 정의 글고 배경 생성
Vijju

1
이전 스레드의 중복 가능성. 이것을 확인하십시오 stackoverflow.com/a/4585750/1129468
gokhanakkurt 2014 년

아래 코드를 사용하고 작동 여부를 알려주십시오.
InnocentKiller

답변:


90

실제로 EditText의 밑줄 색상을 프로그래밍 방식으로 설정하는 것은 매우 쉽습니다 (코드 한 줄만).

색상을 설정하려면 :

editText.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);

색상을 제거하려면 :

editText.getBackground().clearColorFilter();

참고 : EditText에 포커스 가 있으면 설정 한 색상이 적용되지 않고 대신 포커스 색상이 있습니다.

API 참조 :

드로어 블 #setColorFilter

드로어 블 #clearColorFilter


4
또한 안드로이드 자 마린에서 작동, 사용자 정의 렌더러에 당신이 할 수있는 OnElementChangedControl.Background.SetColorFilter(Android.Graphics.Color.White, PorterDuff.Mode.SrcIn);
데이비드 Conlisk에게

@DavidConlisk 어느 쪽 Renderer을 재정의합니까? 검색 창에서이 작업을 수행하는 방법을 알아 내려고합니다.
Nick N.

@NickN. 나는 이것을 선택기에 사용하고 있었기 때문에 PickerRenderer를 재정의했습니다. 그것은 당신이 최고의 어떤 렌더러 정장으로 작동합니다 (이론!)
데이비드 Conlisk에게

1
나는 그것이 있어야한다고 생각하지만 문제는 SearchBarRenderer유형이 아니라는 것입니다 EditText. 작동시킬 수 없습니다.
Nick N.

85

XML 레이아웃 android:backgroundTint=""에서 사용하십시오 EditText.

api <21의 경우 AppCompatEditText지원 라이브러리에서 사용할 수 있습니다.app:backgroundTint=""


14
이것은 현재 api 21 이상에서만 작동합니다. 역방향 지원이 없습니다.
John Shelley

2
이것은 가장 간단하고 간결한 솔루션입니다.
IgorGanapolsky

@JohnShelley는 아래의 내 대답을 참조하십시오 . 롤리팝 이전 이상에서 작동합니다.
Sufian 2016

3
android:background="@null"API <21 인 장치의 경우.
하마드 나시

4
이 속성이 21 미만의 API에서 작동하도록하려면 android 대신 app (xmlns : app = " schemas.android.com/apk/res-auto" ) 네임 스페이스를 사용해야합니다 .
Andrei K.

38

EditText(포커스, 활성화, 활성화) 의 각 상태에 대해 색상이 아닌 다른 배경 이미지를 사용해야합니다 .

http://android-holo-colors.com/

위 사이트에서 Holo 테마의 많은 구성 요소에서 이미지를 가져올 수 있습니다. "EditText"와 원하는 색상을 선택하십시오. 페이지 하단에서 미리보기를 볼 수 있습니다.

.zip 파일을 다운로드하고 프로젝트에 리소스 (이미지 및 XML)를 복사하여 붙여 넣습니다.

XML의 이름이 apptheme_edit_text_holo_light.xml (또는 이와 유사한 것) 인 경우 :

  1. XML "styles.xml"로 이동하여 사용자 정의 EditText스타일을 추가하십시오 .

    <style name="EditTextCustomHolo" parent="android:Widget.EditText">
       <item name="android:background">@drawable/apptheme_edit_text_holo_light</item>
       <item name="android:textColor">#ffffff</item>
    </style>
    
  2. 다음에서 수행하십시오 EditText.

    <EditText
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       style="@style/EditTextCustomHolo"/>
    

그리고 그게 도움이되기를 바랍니다.


24

이것은 이전 버전과 새 버전의 Android에서 잘 작동합니다 (API 10에서도 잘 작동합니다!).

이 스타일을 다음에서 정의하십시오 styles.xml.

<style name="EditText.Login" parent="Widget.AppCompat.EditText">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorHint">@android:color/darker_gray</item>
    <item name="colorAccent">@color/blue</item>
    <item name="colorControlNormal">@color/blue</item>
    <item name="colorControlActivated">@color/blue</item>
</style>

이제 XML에서이를 테마 및 스타일 로 설정합니다 ( style to set textColor, theme to set 다른 모든 항목) :

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
    style="@style/EditText.Login"
    android:theme="@style/EditText.Login"/>

편집하다

이 솔루션은 선택 핸들에 밑줄이 그어진 최신 Android 버전 (Lollipop 또는 Marshmallow 이상)에서 작은 UI 결함을 유발합니다.

이 문제는 이 스레드 에서 설명 합니다 . (개인적으로이 솔루션을 시도하지 않았습니다)


좋은 답변 감사합니다. parent = "android : Widget.EditText"대신 parent = "Widget.AppCompat.EditText"를 사용하여 주요 문제를 해결했습니다.
cfl

1
나는이 21보다 낮은하지 않는 것을 경고 받고 있어요 때문에이 롤리팝 (21)를 작동 의미까지 생각
마크 설리번

@ MarkO'Sullivan 아니, 이것은 롤리팝 이전부터 계속 작동합니다. API 10에서 테스트했으며 제대로 작동합니다. 전체 오류와 표시되는 위치를 붙여 넣으십시오.
Sufian

초점이
맞춰진

18

styles.xml 에서 지정하는 EditText 색상의 밑줄 을 변경할 수 있습니다 . 앱 테마 styles.xml에서 다음을 추가하십시오.

<item name="android:textColorSecondary">@color/primary_text_color</item> 

댓글 섹션에서 아나가 지적한대로

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

이를 테마 스타일로 설정하면 edittext 밑줄의 색상을 변경하는 데 적합합니다.


3
android:textColorSecondary후면 화살표의 색을 결정하는 데 사용됩니다 DrawerLayout, 너무 액션 바에서 햄버거 아이콘을.
Bianca Daniciuc 2015 년

7
<item name="colorControlNormal">@color/edittext_underline_color</item>탐색 모음 색상 문제로 인해 textColorSecondary 대신 사용하게 되었습니다.
Bianca Daniciuc 2015

14

따라서 드로어 블 폴더에 새 .xml 파일을 만들어야합니다.

해당 파일에 다음 코드를 붙여 넣으십시오.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
   <item
    android:bottom="8dp"
    android:left="-3dp"
    android:right="-3dp"
    android:top="-3dp">
    <shape android:shape="rectangle">
     <stroke
       android:width="1dp"
       android:color="@color/white"/>
     </shape>
   </item>
</layer-list>

그리고 EditText에서

android:background="@drawable/your_drawable"

드로어 블 xml, 세트 모서리, 패딩 등으로 재생할 수 있습니다.


1
이는 스타일 또는 레이아웃에서 다른 구성 요소에 영향을주지 않고 글고의 전체 사용자 정의를 허용 아마도 주어진 더 나은 솔루션입니다
mutable2112

내가 undetstand 무엇을, 당신은 그냥 흰색에 글고의 배경을 설정할 수 있습니다에서
rmanalo

내가 찾을 수있는 모든 솔루션을 살펴본 결과 Android Material 구성 요소를 사용하는 유일한 솔루션이었습니다.
barney.balazs

9

앱 스타일에서 colorAccent 속성을 정의합니다 . 여기에 예가 있습니다.

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/action_bar</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/action_bar</item>
</style>

5

이 코드 줄을 사용하여 프로그래밍 방식으로 EditText의 색상을 쉽게 변경할 수 있습니다.

edittext.setBackgroundTintList(ColorStateList.valueOf(yourcolor));


1
작품 매력 : D
Taslim Oseni

1

편집 텍스트 테두리의 배경색을 변경하려면 아래 코드를 사용하십시오.

드로어 블 아래에 새 XML 파일을 만듭니다.

abc.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#00000000" />
    <stroke android:width="1dip" android:color="#ffffff" />
</shape>

편집 텍스트의 배경으로 추가하십시오.

android:background="@drawable/abc"

위의 배경색 설정을 시도했다고 언급했습니다. 작동하지 않았습니다.
AndroidEnthusiast

1

하단 라인 색상을 변경하려면 앱 테마에서 다음을 사용할 수 있습니다.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="colorControlNormal">#c5c5c5</item>
    <item name="colorControlActivated">#ffe100</item>
    <item name="colorControlHighlight">#ffe100</item>
</style>

부동 레이블 색상을 변경하려면 다음 테마를 작성하십시오.

<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">#4ffd04[![enter image description here][1]][1]</item>
</style>

레이아웃에서이 테마를 사용하십시오.

 <android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="20dp"
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">

    <EditText
        android:id="@+id/edtTxtFirstName_CompleteProfileOneActivity"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:capitalize="characters"
        android:hint="User Name"
        android:imeOptions="actionNext"
        android:inputType="text"
        android:singleLine="true"
        android:textColor="@android:color/white" />

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

여기에 이미지 설명 입력


초점이
맞춰진

1

AppCompatEditText 및 색상 선택기로 수행 할 수 있습니다.

            <androidx.appcompat.widget.AppCompatEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:backgroundTint="@color/selector_edittext_underline" />

selector_edittext_underline.xml :

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/focused_color" 
          android:state_focused="true" />
    <item android:color="@color/hint_color" />
</selector>

0

API가 21 미만인 장치를 지원할 필요가없는 경우 xml에서 backgroundHint를 사용합니다. 예를 들면 다음과 같습니다.

 <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:hint="Task Name"
            android:ems="10"
            android:id="@+id/task_name"
            android:layout_marginBottom="15dp"
            android:textAlignment="center"
            android:textColor="@android:color/white"

            android:textColorLink="@color/blue"
            android:textColorHint="@color/blue"
            android:backgroundTint="@color/lighter_blue" />

더 나은 지원 및 대체를 위해 @Akariuz 솔루션을 사용하십시오. backgroundHint는 가장 고통스럽지 않은 솔루션이지만 요구 사항에 따라 이전 버전과 호환되지는 않습니다.


0

colorAccent해당 색상 세트가 필요한 색상을 변경 colorAccent하고 실행하면 출력을 얻습니다.


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