Android 微调器不响应点击,不关闭并且 OnItemSelectedListener 不触发
Android Spinner not responding to clicks, does not close and OnItemSelectedListener does not fire off
我正在用 Kotlin 开发一个应用程序(如果您不了解 Kotlin,我相信您仍然可以帮助您获得 Android/Java 体验)
详情:
我有一个 Spinner,我的 app.Though 它在弹出后不响应点击,甚至显示一些奇怪的视图。正因为如此,OnItemSelected 侦听器也永远不会被触发。
我启动了从 AsyncRealm 调用更新微调器的方法。
代码如下:
整个函数运行起来,微调器不为空,附加监听器后,它也不再为空(调试时)。
private fun updateCategorySpinner(result: MutableList<Category>) {
info("updateCategorySpinner")
val arrayAdapter: ArrayAdapter<String> = ArrayAdapter(ctx, R.layout.spinner_item, result.map{ it.category })
arrayAdapter.setDropDownViewResource(R.layout.spinner_item)
arrayAdapter.notifyDataSetChanged()
categorySpinner.adapter = arrayAdapter
info("updateCategorySpinner done")
}
result.map{..} 创建一个带有类别名称的 MutableList。
问题:
我不知道为什么会有那些箭头,但不管我用什么布局
使用(即使只是一个简单的 TextView)它们就在那里
我在这里错过了什么?
禁用侦听器没有帮助。
用 Anko 附加监听器没有帮助。
侦听器在初始化时触发一次,仅此而已。
一旦下拉菜单打开,它就会完全卡住。
我正在用 Anko 创建我的视图。
R.layout.spinner-item
只是一个<Textview>
。
class AddTodoFragmentUi:AnkoComponent<ViewGroup>,AnkoLogger {
override fun createView(ui: AnkoContext<ViewGroup>): View {
val editTextTheme = R.style.Widget_AppCompat_EditText
return with(ui){
verticalLayout {
info("inVerticalLayout")
verticalPadding =dip(15)
gravity = Gravity.CENTER
editText(editTextTheme){
id = R.id.txt_todo_desc
hintResource = R.string.txt_todo_desc_hint
width = matchParent
}
spinner(R.style.Widget_AppCompat_Spinner){
id= R.id.spinner_todo_category
prompt = "Select a Category"
}
button{
id = R.id.btn_add_todo
textResource = R.string.btn_add_todo
width = matchParent
}
button{
id = R.id.btn_del_todo
textResource = R.string.btn_del_todo
width = matchParent
visibility = View.INVISIBLE
}
}.applyRecursively {view -> when(view){
is EditText -> view.textSize = 20f
is Button -> view.textSize = 30f
}
}
}
}
图片:
好的,所以无响应的问题与设置 Widget_app_compact 旋转器主题有关。
spinner(R.style.Widget_AppCompat_Spinner){
id= R.id.spinner_todo_category
prompt = "Select a Category"
删除它可以解决问题。
请不要像我一样浪费两天时间:D。
我正在用 Kotlin 开发一个应用程序(如果您不了解 Kotlin,我相信您仍然可以帮助您获得 Android/Java 体验)
详情:
我有一个 Spinner,我的 app.Though 它在弹出后不响应点击,甚至显示一些奇怪的视图。正因为如此,OnItemSelected 侦听器也永远不会被触发。
我启动了从 AsyncRealm 调用更新微调器的方法。
代码如下:
整个函数运行起来,微调器不为空,附加监听器后,它也不再为空(调试时)。
private fun updateCategorySpinner(result: MutableList<Category>) {
info("updateCategorySpinner")
val arrayAdapter: ArrayAdapter<String> = ArrayAdapter(ctx, R.layout.spinner_item, result.map{ it.category })
arrayAdapter.setDropDownViewResource(R.layout.spinner_item)
arrayAdapter.notifyDataSetChanged()
categorySpinner.adapter = arrayAdapter
info("updateCategorySpinner done")
}
result.map{..} 创建一个带有类别名称的 MutableList。
问题:
我不知道为什么会有那些箭头,但不管我用什么布局 使用(即使只是一个简单的 TextView)它们就在那里
我在这里错过了什么?
禁用侦听器没有帮助。
用 Anko 附加监听器没有帮助。
侦听器在初始化时触发一次,仅此而已。
一旦下拉菜单打开,它就会完全卡住。
我正在用 Anko 创建我的视图。
R.layout.spinner-item
只是一个<Textview>
。
class AddTodoFragmentUi:AnkoComponent<ViewGroup>,AnkoLogger {
override fun createView(ui: AnkoContext<ViewGroup>): View {
val editTextTheme = R.style.Widget_AppCompat_EditText
return with(ui){
verticalLayout {
info("inVerticalLayout")
verticalPadding =dip(15)
gravity = Gravity.CENTER
editText(editTextTheme){
id = R.id.txt_todo_desc
hintResource = R.string.txt_todo_desc_hint
width = matchParent
}
spinner(R.style.Widget_AppCompat_Spinner){
id= R.id.spinner_todo_category
prompt = "Select a Category"
}
button{
id = R.id.btn_add_todo
textResource = R.string.btn_add_todo
width = matchParent
}
button{
id = R.id.btn_del_todo
textResource = R.string.btn_del_todo
width = matchParent
visibility = View.INVISIBLE
}
}.applyRecursively {view -> when(view){
is EditText -> view.textSize = 20f
is Button -> view.textSize = 30f
}
}
}
}
图片:
好的,所以无响应的问题与设置 Widget_app_compact 旋转器主题有关。
spinner(R.style.Widget_AppCompat_Spinner){
id= R.id.spinner_todo_category
prompt = "Select a Category"
删除它可以解决问题。
请不要像我一样浪费两天时间:D。