EditText에서 언더 바를 숨기는 방법
EditText 밑줄을 숨기려면 어떻게해야합니까 (끝에 작은 세리프가있는 프롬프트 행)?
내가 원하는 것을하는 더 좋은 방법이있을 수 있습니다 : EditText가있는 레이아웃이 있습니다. 일반적으로 사용자가 탭하고 텍스트를 입력하거나 편집 할 수있는 위치에 표시됩니다.
그러나 때로는 동일한 레이아웃을 사용하여 다른 데이터를 단순화하여 읽기 전용 방식으로 동일한 데이터를 표시하려고합니다. 프레젠테이션을 비슷하게 만들고 싶습니다. 높이와 글꼴이 동일해야하지만 밑줄은 없어야합니다.
스톱 갭 측정으로서, EditText를 제거하고 TextView를 대체하여 이것을 구현할 것입니다. 나는 그것이 원하는 결과를 줄 것이라고 생각하지만 속성을 변경하여 쉽게 할 수있는 일을하는 비싼 방법 인 것처럼 보입니다.
당신은을 설정할 수 있습니다 EditText
사용자 정의 투명 당김 또는 사용을 가지고
android:background="@android:color/transparent"
또는
android:background="@null"
배경을 null로 설정하십시오.
android:background="@null"
EditText
의 backgroundTint
값을 특정 색상으로 설정할 수 있습니다 . 투명 색상을 설정하면 언더 바가 사라집니다.
android:backgroundTint="@color/Transparent"
<color name="Transparent">#00000000</color>
하지만 당신은이를 사용할 수 있습니다 Api v21(Lollipop)
이상
편집 텍스트 배경을 다음과 같이 설정하십시오
android:background="#00000000"
작동합니다.
다음을 사용하여 프로그래밍 방식으로 수행 할 수 있습니다 setBackgroundResource
.
editText.setBackgroundResource(android.R.color.transparent);
두 속성 중 하나를 사용하여
android:background="@null"
또는
android:background="@android:color/transparent"
EditText의 밑줄을 숨기려고 일했습니다.
그러나 텍스트를 둘러싼 TextInputLayout에 간격 문제가 발생합니다. EditText
내가 한 일은 Shape 드로어 블을 만들고 배경으로 설정하는 것입니다.
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<padding
android:top="8dp"
android:bottom="8dp"
android:left="8dp"
android:right="8dp" />
<solid android:color="#fff" />
</shape>
참고 : 실제로 firelds @dimen
및 @color
값을 사용 했지만 명확성을 위해 모양 파일을 단순화했습니다.
기본 패딩을 망치지 않고 숨기는 방법이 있습니다.
fun View.setViewBackgroundWithoutResettingPadding(background: Drawable?) {
val paddingBottom = this.paddingBottom
val paddingStart = ViewCompat.getPaddingStart(this)
val paddingEnd = ViewCompat.getPaddingEnd(this)
val paddingTop = this.paddingTop
ViewCompat.setBackground(this, background)
ViewCompat.setPaddingRelative(this, paddingStart, paddingTop, paddingEnd, paddingBottom)
}
용법:
editText.setViewBackgroundWithoutResettingPadding(null)
minWidth도 설정해야합니다. 그렇지 않으면 텍스트가 비어 있으면 커서가 사라집니다.
<EditText
android:id="@+id/et_card_view_list_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="30dp"
android:layout_weight="1"
android:inputType="text"
android:text="Name"
android:background="@android:color/transparent"
/>
편집 텍스트에 이미 배경이 있으면 다음을 사용할 수 있습니다.
android:textCursorDrawable="@null"
나는 매우 유용한 이것과 같은 것을 가지고있다 :
generalEditText.getBackground().mutate().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);
여기서 generalEditText는 내 EditText이고 흰색은 다음과 같습니다.
<color name="white">#ffffff</color>
이것은 패딩을 제거하지 않으며 EditText는 그대로 유지됩니다. 맨 아래 줄만 제거됩니다. 때로는 이와 같이하는 것이 더 유용합니다.
android:background="@null"
많은 제안 을 사용 하면 패딩이 손실되고 EditText가 작아집니다. 적어도 내 경우였다.
약간의 참고 사항은 background null을 설정하고 위에서 제공 한 Java 코드를 시도하면 앱이 실행 된 직후 중단됩니다. (배경을 얻지 만 null이기 때문에 분명합니다. 그러나 그것을 지적하는 것이 중요하다고 생각합니다.
나는 가장 흥미로운 것을 발견했다! null
데이터 바인딩 을 사용 하도록 설정 한 경우 :android:background="@{null}"
그런 다음 배경이 제거 될뿐만 아니라 뷰에는 여전히 기본 배경에서 계산 된 안쪽 여백이 있습니다. 그래서 어떤 이유로 지연된 null 설정이 이전 bg ..에서 패딩을 지우지 않습니까? 뷰의 패딩은 왼쪽 / 위쪽 / 오른쪽 4dp, 아래쪽 13dp입니다 (에뮬레이터 레벨 21에서).
모든 API 레벨에서 동일한 최종 결과를 얻지 못할 수 있으므로주의하십시오! 누군가 당신이 이것을 테스트하고 신뢰할 수 있는지 찾으십시오. (또한 원본의 밑줄 때문에 아래쪽 패딩이 튀어 나옵니다. 따라서 XML에서 변경하거나 코드를 맨 위로로드 한 후 코드에서 재설정해야 할 것입니다 ...
이것이 EditText의 모든 인스턴스와이 클래스에서 상속되는 클래스에 영향을 미치려면 editTextBackground 속성 값을 테마에 설정해야합니다.
<item name="android:editTextBackground">@drawable/bg_no_underline</item>
내가 사용하는 드로어 블의 예는 다음과 같습니다.
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
android:insetTop="@dimen/abc_edit_text_inset_top_material"
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
<selector>
<item android:drawable="@android:color/transparent"/>
</selector>
</inset>
이것은 기본 머티리얼 디자인 구현이 약간 수정 된 버전입니다.
적용하면 모든 EditText가 앱 전체에서 밑줄을 제거하므로 스타일을 수동으로 적용 할 필요가 없습니다.
이것을 간단히 사용하십시오
editText.setBackgroundColor(Color.TRANSPARENT);
editText의 STYLE을 정의하여 모든 속성을 공통으로 다시 그룹화 할 수도 있습니다. 동작이 필요한 텍스트를 여러 번 편집해야하는 경우 매우 강력합니다.
res / values / styles.xml에 코드를 넣으십시오.
<style name="MyEditTextStyle" parent="@android:style/TextAppearance.Widget.EditText"> <item name="android:background">@color/transparence</item> //NO UNDERBAR <item name="android:maxLines">1</item> <item name="android:height">28dp</item> //COMMON HEIGHT </style>
그런 다음 editText에서 호출하면됩니다.
<EditText
android:id="@+id/edit1"
style="@style/MyEditTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/edit2"
style="@style/MyEditTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
프로그래밍 방식으로 사용 : editText.setBackground(null)
에서 xml
사용 :android:background="@null"
android:background="@android:color/transparent"
또는
android:background="@null"
배경을 null로 설정
android:background="@null" in your xml
제 경우 editText.setBackgroundResource(R.color.transparent);
에는 최고입니다.
막대 바로 아래의 기본 패딩은 제거하지 않습니다.
R.color.transparent = #00000000
백그라운드를 사용하는 경우이 태그를 사용해야합니다
android:testCursorDrawable="@null"
내 경우에는 텍스트를 편집하기 위해 사용자 정의 배경을 사용하고 있었으므로 배경을 @null로 설정하거나 색조를 투명으로 설정하면 해결책이 아니므로 아주 잘 작동하는 작은 트릭을 연주했습니다.
android:inputType="textVisiblePassword"
최적의 솔루션은 아니지만 작동합니다.
참고 URL : https://stackoverflow.com/questions/13975528/how-to-hide-underbar-in-edittext
'Programing' 카테고리의 다른 글
조건부로 React 컴포넌트에 속성을 추가하는 방법은 무엇입니까? (0) | 2020.02.18 |
---|---|
Twitter Bootstrap 버튼을 올바르게 정렬하려면 어떻게해야합니까? (0) | 2020.02.18 |
node_modules에 로컬로 설치된 패키지를 사용하는 방법은 무엇입니까? (0) | 2020.02.18 |
상대 레이아웃의 백분율 너비 (0) | 2020.02.18 |
배열을 어떻게 섞을 수 있습니까? (0) | 2020.02.18 |