Spinner和EditText - 解决

时间:2015-12-29 23:44:33

标签: android

我想显示EditText。在点击编辑文本时,Spinner应该打开。在微调器中选择项目时,应在编辑文本中填充该值。

gender.setText(AppVars.Gender.Male.name)

性别是EditText,genderSpinner是Spinner

当我点击性别编辑文本时,它会打开微调器并在选择项目时,所选项目位于编辑文本中。都好。但是,如果我没有在微调器中选择任何内容并单击屏幕上的某个位置,则不会显示微调器值,而是仅在屏幕底部显示默认值。

我想摆脱这个。

如果我点击屏幕中的任何其他位置,微调器就会消失。有可能吗?

以下是代码,

var genderInt: Int = AppVars.Gender.Male.genderVal

genderSpinner.setAdapter(ArrayAdapter<AppVars.Gender>(activity, android.R.layout.simple_spinner_item, AppVars.Gender.values()))
gender.setText(AppVars.Gender.Male.name)
genderSpinner.setSelection(AppVars.Gender.Male.genderVal)

val genderListener = object: AdapterView.OnItemSelectedListener {
    override fun onNothingSelected(parent: AdapterView<*>?) {
        info("Nothing selected*********************")
        genderSpinner.visibility = View.INVISIBLE
    }

    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
        val genderEnum: AppVars.Gender = parent?.getItemAtPosition(position) as AppVars.Gender
        info("Item selected*********************")
        genderInt = genderEnum.genderVal
        gender.setText(genderEnum.name)
        genderSpinner.visibility = View.INVISIBLE
    }

}

genderSpinner.onItemSelectedListener = genderListener

gender.setOnClickListener {
    genderSpinner.visibility = View.VISIBLE
    genderSpinner.performClick()
}

1 个答案:

答案 0 :(得分:4)

您只需使用AutoCompleteTextView即可轻松完成所有操作,而无需使用EditTextSpinnerHere you have a good tutoial和 也是documentation