๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ฑ| Android/๐Ÿ“˜ | ๊ธฐ๋ก

[Android, Kotlin] editText์˜ toggle icon์ด ๋ฐ˜๋Œ€๋กœ ๋˜์—ˆ์„ ๋•Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

by immgga 2022. 8. 31.

TextInputEditText

๊ธฐ๋ณธ edittext์™€ ๋‹ค๋ฅด๊ฒŒ ๋” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” edit text์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค.

TextInputEditText์—๋Š” ๊ฐ€๋ ค์•ผ ํ•  ํ…์ŠคํŠธ(๋น„๋ฐ€๋ฒˆํ˜ธ)๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ passwordToggleEnabled๋ผ๋Š” ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

passwordToggleEnabled ์„ ์ ์šฉํ•œ edit text ์˜ˆ

 

ํ•˜์ง€๋งŒ passwordToggleEnabled ์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์ด์ƒํ•œ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚  ์ˆ˜ ์žˆ๋Š”๋ฐ

 

๋ฐ”๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ณด์ด์ง€๋งŒ ์•„์ด์ฝ˜์€ ๋ˆˆ์„ ๊ฐ€๋ฆฌ๊ณ (?) ์žˆ๊ฒŒ ๋œจ๋Š” ๋ฌธ์ œ!

๋ฐ˜๋Œ€๋„ ๋งˆ์ฐฌ๊ฐ€์ง€

์ด๋ฒˆ์—๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋‚ด๊ฐ€ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…์„ ํ•˜๊ฒ ๋‹ค.

 

๋จผ์ € toggle icon์ด ํด๋ฆญ๋˜์—ˆ์„ ๋•Œ ๋‚˜์˜ค๊ฒŒ ํ•˜๋Š” ์•„์ด์ฝ˜๋“ค์„ ์„ค์ •ํ•œ๋‹ค.

toogle_icon_status.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/baseline_remove_red_eye_black" android:state_checked="true"/>
    <item android:drawable="@drawable/baseline_visibility_off_black"/>
</selector>

ํด๋ฆญ๋˜์—ˆ๊ฑฐ๋‚˜ ์•„๋‹ ๋•Œ์˜ ์•„์ด์ฝ˜์€ ์•„๋ฌด๊ฑฐ๋‚˜ ์ •ํ•ด๋„ ์ƒ๊ด€์—†๋‹ค.

 

 

ํ˜„์žฌ edittext๊ฐ€ ์žˆ๋Š” xml ํŒŒ์ผ์— ์ ์šฉํ•ด์ค€๋‹ค.

activiy_login.xml(editText ๋ถ€๋ถ„)

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/pw_input_layout"
    . . .
    app:passwordToggleEnabled="true"
    app:passwordToggleTint="@null"
    app:passwordToggleDrawable="@drawable/toggle_icon_status">

    <com.google.android.material.textfield.TextInputEditText
        . . .
        android:inputType="textPassword"/>
</com.google.android.material.textfield.TextInputLayout>

 

TextInputLayout์˜

  • app:passwordToggleEnabled="true"
  • app:passwordToggleTint="@null"
  • app:passwordToggleDrawable="@drawable/toggle_icon_status"

์ด 3๊ฐœ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์—†์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์—ˆ๋‹ค.

 

๊ฒฐ๊ณผ ํ™”๋ฉด

์ ์šฉ์ด ์ž˜ ๋ผ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

728x90

๋Œ“๊ธ€