텍스트 편집에서 막대 아래를 숨기는 방법
텍스트 편집 아래쪽 막대(끝에 작은 세리프가 있는 프롬프트 줄)를 숨기려면 어떻게 해야 합니까?
제가 원하는 것을 할 수 있는 더 나은 방법이 있을지도 모릅니다.편집 텍스트가 있는 레이아웃이 있습니다.일반적으로 사용자가 탭을 눌러 텍스트 입력 또는 편집을 시작할 수 있는 위치에 표시됩니다.
그러나 때로는 동일한 레이아웃(다른 논리를 단순화)을 사용하여 동일한 데이터를 읽기 전용으로 표시하고 싶습니다.프레젠테이션의 높이와 글꼴은 같아야 하지만 언더바는 없어야 합니다.
임시방편으로 텍스트 편집을 제거하고 텍스트 보기를 대체하여 이 기능을 구현하려고 합니다.저는 그것이 원하는 결과를 줄 것이라고 생각하지만, 속성을 변경함으로써 해야 할 일을 하는 것은 대략 돈이 많이 드는 방법처럼 보입니다.
▁the를 설정할 수 .EditText
이
android:background="@android:color/transparent"
또는
android:background="@null"
또는 프로그래밍 방식으로
editText.setBackgroundResource(android.R.color.transparent);
배경을 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);
텍스트 입력 레이아웃 내부에서 텍스트 편집을 사용하는 경우app:boxBackgroundMode="none"
다음과 같이:
<com.google.android.material.textfield.TextInputLayout
app:boxBackgroundMode="none"
...
>
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.google.android.material.textfield.TextInputLayout>
제가 한 일은 Shape drawable을 만들고 배경으로 설정하는 것이었습니다.
<?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>
저는 참고: 실로사니다습용했을 사용했습니다.@dimen
그리고.@color
방화벽에 대한 값이지만 명확하게 하기 위해 모양 파일을 단순화했습니다.
다음 중 하나의 속성 사용:
android:background="@null"
OR
android:background="@android:color/transparent"
편집 텍스트의 밑줄을 숨기는 데 도움이 되었습니다.
입력 한다는 점에 하시기 바랍니다.EditText
기본 패딩을 손상시키지 않고 숨길 수 있는 방법은 다음과 같습니다.
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)
업데이트:
항상 null을 전달하는 자신을 발견하면 메서드에서 이를 코드화할 수 있습니다. 그러면 EditText 자체를 오버로드할 수 있습니다.
fun EditText.removeUnderline() {
val paddingBottom = this.paddingBottom
val paddingStart = ViewCompat.getPaddingStart(this)
val paddingEnd = ViewCompat.getPaddingEnd(this)
val paddingTop = this.paddingTop
ViewCompat.setBackground(this, null)
ViewCompat.setPaddingRelative(this, paddingStart, paddingTop, paddingEnd, paddingBottom)
}
// usage:
editText.removeUnderline()
나의 경우 텍스트 편집을 위해 사용자 지정 배경을 사용하고 있었기 때문에 배경을 @null로 설정하거나 틴트를 투명으로 설정하는 것은 나에게 해결책이 되지 않았기 때문에 나는 나에게 아주 잘 맞는 작은 속임수를 썼습니다.
android:inputType="textVisiblePassword"
그리고 그것은 일을 꽤 잘 마무리합니다.최적의 솔루션은 아니지만 작동합니다.
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"
/>
XML 편집 텍스트에서 이 코드 사용
android:background="@android:color/transparent"
아래 코드에 나타난 바와 같이.
<EditText
android:id="@+id/EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"/>
저는 매우 유용한 다음과 같은 것을 가지고 있습니다.
generalEditText.getBackground().mutate().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);
여기서 일반 편집텍스트는 내 텍스트 편집이고 색상은 흰색입니다.
<color name="white">#ffffff</color>
이렇게 해도 패딩이 제거되지 않으며 편집 텍스트는 그대로 유지됩니다.하단의 라인만 제거됩니다.때때로 이렇게 하는 것이 더 유용합니다.
사용하는 경우android:background="@null"
많은 사람들이 제안했듯이 패딩을 잃어버리면 EditText는 작아집니다.적어도, 그건 제 경우였어요.
작은 참고 사항은 만약 당신이 background null을 설정하고 내가 위에서 제공한 자바 코드를 시도한다면, 당신의 앱은 실행 후 바로 충돌할 것입니다. (background null이지만 null이기 때문입니다.뻔할 수도 있지만 지적하는 것이 중요하다고 생각합니다.
간단히 사용
editText.setBackgroundColor(Color.TRANSPARENT);
저는 가장 흥미로운 것을 발견했습니다!으로 하면,null
바인딩 : 데터바딩용사:android:background="@{null}"
그러면 배경이 제거될 뿐만 아니라 보기에는 기본 배경에서 계산된 패딩이 남아 있습니다.그래서 어떤 이유에서인지 지연된 null 설정은 이전 bg에서 패딩을 지우지 못합니다...?보기의 패딩은 왼쪽/위쪽/오른쪽 4dp, 아래쪽 13dp(에뮬레이터 레벨 21부터)입니다.
모든 API 레벨에서 동일한 최종 결과를 얻지 못할 수 있으므로 주의하십시오!누군가 이것을 테스트해보고 신뢰할 수 있는지 말해주세요. (또한 원본에 있는 밑줄 때문에 하단 패딩이 튀어나옵니다.)따라서 XML에서 변경하거나 코드에서 동일한 맨 위로 로드된 후 재설정하는 것이 좋습니다.
편집 텍스트에 이미 배경이 있는 경우 다음을 사용할 수 있습니다.
android:textCursorDrawable="@null"
EditText의 모든 인스턴스와 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>
이것은 기본 재료 설계 구현의 약간 수정된 버전입니다.
이 기능을 적용하면 모든 편집 텍스트가 앱 전체에서 밑줄을 제거하고 스타일을 수동으로 모두 적용할 필요가 없습니다.
android:background="@android:color/transparent"
또는
android:background="@null"
또한 모든 속성을 공통으로 다시 그룹화할 수 있도록 편집 텍스트에 대한 스타일을 정의할 수 있습니다.동작이 필요한 텍스트를 여러 번 편집해야 하는 경우 매우 강력합니다.
코드를 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
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" />
편집 텍스트 Android Studio에서 밑줄을 제거하는 몇 가지 방법
android:background="@null"
위 라인은 어느 시점에서 문제를 일으킵니다.
또는
사용하다 android:background="@android:color/transparent"
또는 프로그래밍 방식으로**
editText.setBackgroundResource(android.R.color.transparent);
프로그래밍 방식 사용:editText.setBackground(null)
부터xml
사용:android:background="@null"
android:inputType="textVisiblePassword|textMultiLine"
android:background="@android:color/transparent"
...최적의 솔루션은 아니지만 효과적입니다.
좋아요. Android에서 텍스트 편집을 위해 아웃라인 상자 및 텍스트 편집의 Null 배경과 같은 몇 가지 더 쉬운 작업을 만들 수 있습니다.는 아래와 같습니다.
복사하여 붙여넣기만 하면 됩니다.
마지막에 도구 옵션이 있는 암호에 대해 아웃라인 상자를 사용하여 텍스트를 편집합니다.
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
app:boxCornerRadiusBottomEnd="10dp"
app:boxCornerRadiusBottomStart="10dp"
app:boxCornerRadiusTopEnd="10dp"
app:boxCornerRadiusTopStart="10dp"
app:boxStrokeColor="@color/primary_color"
app:boxStrokeWidth="1dp"
app:boxStrokeWidthFocused="1dp"
app:errorIconDrawable="@null"
app:hintTextColor="#d3d3d3"
app:passwordToggleDrawable="@drawable/password_toggle"
app:passwordToggleEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:paddingStart="10dp"
android:paddingEnd="0dp"
android:textCursorDrawable="@null"
android:textSize="12sp" />
</com.google.android.material.textfield.TextInputLayout>
다음에 대한 드로블password_toggle
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_show" android:state_checked="true"/>
<item android:drawable="@drawable/ic_hide"/>
</selector>
이제 테두리 없이 텍스트를 편집합니다.
전자 메일 편집 텍스트
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"
android:hint="@string/enter_your_email"
android:imeOptions="actionDone"
android:inputType="textEmailAddress"
android:maxLines="1"
android:padding="10dp"
android:singleLine="true"
android:textColor="@color/black"
android:textColorHint="#d3d3d3"
android:textSize="12sp" />
암호 편집 텍스트의 경우.
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_edittext"
android:hint="@string/enter_your_password"
android:imeOptions="actionDone"
android:inputType="textEmailAddress"
android:maxLines="1"
android:padding="10dp"
android:singleLine="true"
android:textColor="@color/black"
android:textColorHint="#d3d3d3"
android:textSize="12sp" />
배경을 null로 설정합니다.
android:background="@null" in your xml
저 같은 경우에는.editText.setBackgroundResource(R.color.transparent);
최고입니다.
바 바로 아래의 기본 패딩은 제거되지 않습니다.
R.color.transparent = #00000000
백그라운드를 사용하는 경우 이 태그를 사용해야 합니다.
android:testCursorDrawable="@null"
여백과 배경색을 모두 유지하려면 다음을 사용합니다.
background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<padding
android:bottom="10dp"
android:left="4dp"
android:right="8dp"
android:top="10dp" />
<solid android:color="@android:color/transparent" />
</shape>
텍스트 편집:
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/none_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background"
android:inputType="text"
android:text="First Name And Last Name"
android:textSize="18sp" />
다음과 같은 사용자 정의 편집 텍스트를 만들 수도 있습니다.
class CustomEditText : androidx.appcompat.widget.AppCompatEditText {
constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
private val paint = Paint()
private val path = Path()
init { // hide your underbar
this.setBackgroundResource(android.R.color.transparent)
// other init stuff...
}
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
// draw your canvas...
}
}
고정 힌트는 다음을 사용합니다.
<item name="boxStrokeWidth">0dp</item>
<item name="boxCornerRadiusTopStart">12dp</item>
<item name="boxCornerRadiusTopEnd">12dp</item>
<item name="boxCornerRadiusBottomStart">12dp</item>
<item name="boxCornerRadiusBottomEnd">12dp</item>
저는 이 문제를 다음과 같이 해결했습니다.
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/tv_input_password"
android:layout_width="250dp"
android:layout_height="50dp"
app:errorEnabled="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.503"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_signin"
app:layout_constraintVertical_bias="0.322"
app:boxStrokeWidth="0dp"
app:boxStrokeWidthFocused="0dp"
app:passwordToggleEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et_password"
android:layout_width="250dp"
android:layout_height="50dp"
android:background="@drawable/shape1"
/>
</com.google.android.material.textfield.TextInputLayout>
사실은app:boxStrokeWidth="0dp"
그리고.app:boxStrokeWidthFocused="0dp"
밑줄을 제거할 수 있습니다.
직사각형 모양:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<solid android:color="@color/white"/>
<corners android:radius="50dp"/>
<stroke android:width="0.75dp" android:color="#B1B0B3"/>
</shape>
언급URL : https://stackoverflow.com/questions/13975528/how-to-hide-underbar-in-edittext
'programing' 카테고리의 다른 글
레일에서 STI 하위 클래스의 경로를 처리하는 모범 사례 (0) | 2023.06.14 |
---|---|
변환이 VUEX의 스토어를 업데이트하지 않음 (0) | 2023.06.14 |
UIView에 관점 변환을 적용하려면 어떻게 해야 합니까? (0) | 2023.06.14 |
드롭다운 목록에 값이 있는지 확인하는 가장 좋은 방법은 무엇입니까? (0) | 2023.06.14 |
web.config>config>config>runtime>assemblyBinding에서 생성된 항목의 의미/이유는 무엇입니까? (0) | 2023.06.14 |