首页 > 解决方案 > Android TV:如何添加密码操作

问题描述

我正在尝试使用GuigedStepSupportFragement. 我有一个密码字段并给出了它inputType(InputType.TYPE_TEXT_VARIATION_PASSWORD),但是当我填写密码时它不显示点。

看这里: 在此处输入图像描述

这是我在onCreateActions方法中添加电子邮件和密码输入的片段代码:

class LoginFragment : GuidedStepSupportFragment() {
    private val ACTION_ID_EMAIL = 1.toLong()
    private val ACTION_ID_PASSWORD = ACTION_ID_EMAIL + 1

    override fun onCreateGuidance(savedInstanceState: Bundle?): GuidanceStylist.Guidance {
        return GuidanceStylist.Guidance(
                getString(R.string.setup_login_title),
                getString(R.string.setup_login_description),
                "",
                null
        )
    }

    override fun onCreateActions(actions: MutableList<GuidedAction>, savedInstanceState: Bundle?) {
        actions.add(GuidedAction.Builder(activity)
                .id(ACTION_ID_EMAIL)
                .title(R.string.setup_login_input_email_title)
                .editTitle("")
                .description(R.string.setup_login_input_email_description)
                .inputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS)
                .editInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS)
                .editable(true)
                .build()
        )

        actions.add(GuidedAction.Builder(activity)
                .id(ACTION_ID_PASSWORD)
                .title(R.string.setup_login_input_password_title)
                .editTitle("")
                .description(R.string.setup_login_input_password_description)
                .inputType(InputType.TYPE_TEXT_VARIATION_PASSWORD)
                .editInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD)
                .editable(true)
                .build()
        )
    }

    override fun onCreateButtonActions(actions: MutableList<GuidedAction>,
                                       savedInstanceState: Bundle?) {
        actions.add(GuidedAction.Builder(activity)
                .clickAction(GuidedAction.ACTION_ID_OK)
                .build()
        )
        actions[actions.size - 1].isEnabled = false
    }

    override fun onGuidedActionEditedAndProceed(action: GuidedAction?): Long {
        if (action?.id == ACTION_ID_EMAIL) {
            // todo validate

            action.description = action.editTitle;

            return GuidedAction.ACTION_ID_NEXT;
        }

        if (action?.id == ACTION_ID_PASSWORD) {
            action.description = action.editTitle;

            return GuidedAction.ACTION_ID_NEXT;
        }


        return super.onGuidedActionEditedAndProceed(action)
    }
}

如何使密码输入的行为类似于密码字段?

标签: androidandroid-tvleanback

解决方案


下面的作品

GuidedAction.Builder(activity)
            .id(PASSWORD.toLong())
            .title("Password")
            .descriptionEditable(true)
            .descriptionInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD)
            .descriptionEditInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD)
            .build()

推荐阅读