#android #listview #editview
#Android #listview #editview
Вопрос:
Код очень прост. В верхнем колонтитуле есть EditText, а в нижнем колонтитуле — EditText, сделайте высоту элементов высоту верхнего колонтитула высоту нижнего колонтитула = высоту экрана, после того, как вы нажмете EditText в верхнем колонтитуле, затем щелкните EditText в нижнем колонтитуле, появится ошибка. Любой может помочь мне объяснить проблему, я буду очень признателен, спасибо.
class MainActivity : AppCompatActivity() {
@SuppressLint("ClickableViewAccessibility")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val listView = findViewById<ListView>(R.id.listView)
listView.adapter = ArrayAdapter(this,
android.R.layout.simple_list_item_1,
arrayListOf("1", "2", "3", "4", "5", "6","1", "2", "3", "4", "5", "6"))
val headerView = LayoutInflater.from(this).inflate(R.layout.header, listView, false)
val etHeader = headerView.findViewById<EditText>(R.id.etComment)
listView.addHeaderView(headerView)
val footerView = LayoutInflater.from(this).inflate(R.layout.footer, listView, false)
val etFooter = footerView.findViewById<EditText>(R.id.etComment)
listView.addFooterView(footerView)
etHeader.setOnFocusChangeListener { v, hasFocus ->
Log.e("", "etHeader->setOnFocusChangeListener: $hasFocus")
}
etFooter.setOnFocusChangeListener { v, hasFocus ->
Log.e("", "etFooter->setOnFocusChangeListener: $hasFocus")
}
}
}
Весь код здесь: https://github.com/tuchangwei/EditTextIssue .
Ответ №1:
Это проблема вытеснения фокуса. Добавьте следующий код.
etFooter.setOnFocusChangeListener { v, hasFocus ->
Log.e("", "etFooter->setOnFocusChangeListener: $hasFocus")
if(hasFocus){
etFooter.setFocusable(true)
etFooter.setFocusableInTouchMode(true)
etFooter.requestFocus()
etFooter.findFocus()
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(etFooter, InputMethodManager.SHOW_FORCED);
}
}
Комментарии:
1. спасибо за ваш ответ, но это работает только один раз. Если вы нажмете кнопку «Назад», чтобы клавиатура исчезла, затем щелкните нижний колонтитул, чтобы отобразить клавиатуру, вопрос вернется.