LoginSignup
4
4

More than 5 years have passed since last update.

【Android】パスワードを表示させる機能をサクッと実装する

Last updated at Posted at 2017-12-19

Password Visibility Toggleとは別の方法です。
Samplerはこちら

イメージ

実装

Pattern0はヤツですが、今回はPattern1の紹介です。
わかりやすいようにTextInputLayoutを使っていますが、使わなくても大丈夫なので
Password Visibility Toggleに頼らずにカスタマイズしたい!って人向けです。

XML

activity_main.xml
<!-- 略 -->
    <!-- Pattern 1 -->
    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <!-- password -->
        <android.support.design.widget.TextInputEditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="password"/>
    </android.support.design.widget.TextInputLayout>

    <!-- パスワードの表示非表示 -->
    <CheckBox
        android:id="@+id/password_visibility"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="10dp"
        android:text="パスワードを表示する"/>

<!-- 略 -->

Activity

MainActivity.java

//略

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextInputEditText password = (TextInputEditText)findViewById(R.id.password);

        CheckBox passwordVisibilityCheckBox = (CheckBox) findViewById(R.id.password_visibility);

        // パスワード切り替えチェックボックス
        passwordVisibilityCheckBox.setOnClickListener((View v) -> {

            // パスワードのカーソル位置保存
            int cursorPos = password.getSelectionStart();

            boolean checked = passwordVisibilityCheckBox.isChecked();
            if (checked) {
                // パスワード可視化
                password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
                // カーソル位置セット
                password.setSelection(cursorPos);
            } else {
                // パスワード不可視化
                password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
                password.setSelection(cursorPos);
            }
        });
    }
}


はい完成!

終わりに

もっといい実装があるよ!って方、コメントお待ちしてます!!

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4