[android] 끝에 cross (x) 버튼으로 EditText를 만드는 방법은 무엇입니까?

EditText크로스 버튼이 포함 된 위젯이 있습니까 , 아니면 EditText자동으로 생성되는 속성 이 있습니까? 십자 버튼으로 작성된 텍스트를 삭제하고 싶습니다 EditText.



답변

다음 레이아웃을 사용하십시오.

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="9dp"
    android:padding="5dp">

    <EditText
        android:id="@+id/calc_txt_Prise"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="numberDecimal"  
        android:layout_marginTop="20dp"
        android:textSize="25dp"
        android:textColor="@color/gray"
        android:textStyle="bold"
        android:hint="@string/calc_txt_Prise"
        android:singleLine="true" />

    <Button
        android:id="@+id/calc_clear_txt_Prise"      
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_gravity="right|center_vertical"
        android:background="@drawable/delete" />

</FrameLayout>

버튼의 ID를 사용하고 onClickListener 메소드에서 원하는 작업을 수행 할 수도 있습니다.


답변

DroidParts 사용하는 경우 ClearableEditText 추가했습니다 .

다음 abs__ic_clear_holo_lightActionBarSherlock 에서 사용자 정의 배경 및 명확한 아이콘으로 설정된 모습입니다 .

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


답변

Android 용 Material Design Components를 통한 2020 솔루션 :

Gradle 설정에 재료 구성 요소 추가 :

https://maven.google.com/ 에서 최신 버전을 찾으십시오.

implementation 'com.google.android.material:material:1.1.0'

또는 AndroidX 라이브러리 사용으로 업데이트하지 않은 경우 다음과 같이 추가 할 수 있습니다.

implementation 'com.android.support:design:28.0.0'

그때

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_text"
    app:endIconMode="clear_text">

  <com.google.android.material.textfield.TextInputEditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

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

: 지불에 대한 관심 응용 프로그램 : endIconMode = “clear_text”

여기에서 논의한 바와 같이 머티리얼 디자인 문서


답변

이것은 코 틀린 솔루션입니다. 이 도우미 메소드를 kotlin 파일에 넣으십시오.

fun EditText.setupClearButtonWithAction() {

    addTextChangedListener(object : TextWatcher {
        override fun afterTextChanged(editable: Editable?) {
            val clearIcon = if (editable?.isNotEmpty() == true) R.drawable.ic_clear else 0
            setCompoundDrawablesWithIntrinsicBounds(0, 0, clearIcon, 0)
        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) = Unit
        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) = Unit
    })

    setOnTouchListener(View.OnTouchListener { _, event ->
        if (event.action == MotionEvent.ACTION_UP) {
            if (event.rawX >= (this.right - this.compoundPaddingRight)) {
                this.setText("")
                return@OnTouchListener true
            }
        }
        return@OnTouchListener false
    })
}

그런 다음 onCreate방법에 따라 다음과 같이 사용하십시오.

yourEditText.setupClearButtonWithAction()

BTW, 당신은 R.drawable.ic_clear먼저 또는 명확한 아이콘 을 추가해야합니다 . 이것은 google- https://material.io/tools/icons/?icon=clear&style=baseline 에서 온 것입니다.


답변

Android의 지원 라이브러리에는 정확히이 작업을 수행하는 SearchView클래스가 있습니다. ( EditText그러나 파생되지는 않았으므로 SearchView.OnQueryTextListener대신 을 사용해야 합니다 TextWatcher)

텍스트가없는 검색보기 (및 힌트 텍스트 "검색")

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

XML에서 다음과 같이 사용하십시오.

  <android.support.v7.widget.SearchView
            android:id="@+id/searchView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:iconifiedByDefault="false"
            android:queryHint="@string/SearchHint"
            app:iconifiedByDefault="false"
            app:queryHint="@string/SearchHint" />


답변

Drawable x = getResources().getDrawable(R.drawable.x);
x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight());
mEditText.setCompoundDrawables(null, null, x, null);

여기서 x는 다음과 같습니다.

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


답변

들어 drawable resource당신은 표준 안드로이드 이미지를 사용할 수 있습니다 :

http://androiddrawables.com/Menu.html

예를 들면 다음과 같습니다.

android:background="@android:drawable/ic_menu_close_clear_cancel"