我有一个搜索视图。如何在 Kotlin 中限制其输入长度?我想要最多 6 个长度。回答的问题是在 java 中,我无法将其转换为我的代码。
SearchView
我用databinding绑定searchview,给listeners.
searchViewFiyatInput = binding.fiyatInputEditText
searchViewFiyatInput.setOnQueryTextListener(object : androidx.appcompat.widget.SearchView.OnQueryTextListener{
override fun onQueryTextSubmit(query: String?): Boolean {
query?.let {
try {
binding.elmasText.text = (query.toDouble()*2.63).toInt().toString()
binding.elmasTextOnImage.text = (query.toDouble()*2.63).toInt().toString()
binding.fiyatOnImage.text = query.toInt().toString()
} catch (e: Exception){
binding.elmasText.text = ""
binding.elmasTextOnImage.text = ""
binding.fiyatOnImage.text = ""
}
}
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
newText?.let {
try {
binding.elmasText.text = (newText.toDouble()*2.63).toInt().toString()
binding.elmasTextOnImage.text = (newText.toDouble()*2.63).toInt().toString()
binding.fiyatOnImage.text = newText.toInt().toString()
} catch (e: Exception){
binding.elmasText.text = ""
binding.elmasTextOnImage.text = ""
binding.fiyatOnImage.text = ""
}
}
return true
}
})
XML
<androidx.appcompat.widget.SearchView
android:id="@+id/fiyatInputEditText"
app:iconifiedByDefault="false"
android:layout_width="0dp"
android:textSize="20sp"
android:layout_marginStart="8dp"
app:searchIcon="@null"
android:layout_marginEnd="8dp"
android:inputType="number"
android:layout_weight="1"
android:layout_height="50dp"
/>
更新
我尝试过滤但是没有
.filters
方法
searchViewFiyatInput.filters =
arrayOf<InputFilter>(LengthFilter(6))
或
(searchViewFiyatInput as TextView).filters= arrayOf(InputFilter.LengthFilter(6))
也没有用。
您可以使用以下代码:
TextView et = (TextView) searchView.findViewById(R.id.fiyatInputEditText);
et.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
对于科特林:
binding.fiyatInputEditText.filters = arrayOf(InputFilter.LengthFilter(6))