autocompletetextview 相关问题

AutoCompleteTextView是一个Android小部件,可在用户输入时自动显示完整的建议。

当用户触摸下拉菜单时隐藏软键盘

我的应用程序中公开了以下 Android Material 组件的下拉菜单: 我的应用程序中公开了以下 Android Material 组件的下拉菜单: <com.google.android.material.textfield.TextInputLayout android:id="@+id/drop_down_menu" style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginEnd="8dp" android:theme="@style/Theme.MaterialComponents.Light.DarkActionBar" app:boxBackgroundColor="@android:color/white" app:layout_constraintBottom_toBottomOf="@+id/number_text_view" app:layout_constraintEnd_toStartOf="@+id/add_button" app:layout_constraintTop_toTopOf="@+id/number_text_view"> <com.google.android.material.textfield.MaterialAutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="none" android:paddingStart="8dp" android:paddingEnd="8dp" /> </com.google.android.material.textfield.TextInputLayout> 当用户触摸下拉菜单并出现菜单选项时,如何隐藏片段中的软键盘?当用户单击 EditText 组件并且在触摸下拉菜单关闭键盘之前未触摸屏幕的其他部分时,键盘会显示。 您可以将focusChangeListener注册到MaterialAutoCompleteTextView并在获得焦点时隐藏键盘。 autoCompleteTextView.setOnFocusChangeListener { v, hasFocus -> if (hasFocus) { hideSoftKeyboard() // Using activity extension function // v.hideKeyboard() // Using view extension function } } 这是隐藏键盘的 Activity 扩展功能: fun Activity.hideSoftKeyboard() { val inputMethodManager = this.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager val currentFocus = this.currentFocus val windowToken = this.window?.decorView?.rootView?.windowToken inputMethodManager.hideSoftInputFromWindow(windowToken, 0) inputMethodManager.hideSoftInputFromWindow( windowToken, InputMethodManager.HIDE_NOT_ALWAYS ) if (currentFocus != null) { inputMethodManager.hideSoftInputFromWindow(currentFocus.windowToken, 0) } } 或者您可以在 View 本身上使用以下内容。 来源 fun View.hideKeyboard(): Boolean { try { val inputMethodManager = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager return inputMethodManager.hideSoftInputFromWindow(windowToken, 0) } catch (ignored: RuntimeException) { } return false } } bindingSheet.dropDownFloorList.setOnFocusChangeListener { v, hasFocus -> if (hasFocus) { hideSoftKeyboard() // Using activity extension function // v.hideKeyboard() // Using view extension function } }

回答 2 投票 0

通过xml从AutoCompleteTextView中删除下划线

我有这样的观点: 我有这样的观点: <AutoCompleteTextView android:id="@+id/search_bar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignBottom="@+id/rect_search" android:layout_alignLeft="@+id/rect_search" android:layout_alignRight="@+id/rect_search" android:layout_alignTop="@+id/rect_search" android:hint="@string/search_bar" android:textSize="20sp" /> 如您所见,该视图进入另一个视图 rect_search,即 ImageView。 现在我注意到 AutoCompleteTextView 小部件底部有一个默认下划线,我将删除它。有可能吗? 只需输入: android:background="@android:color/transparent" 在你的视野中。 编辑:正如@kiya所说,现在更好用 android:backgroundTint="@android:color/transparent" 因为它保持视图尺寸。 android:inputType="textPhonetic" 这也能正常工作 android:inputType="textNoSuggestions" 如果您想删除下划线并保持大小,请使用以下代码: android:backgroundTint="@android:color/transparent" 我做了很多尝试来构建一个具有正确颜色的下拉菜单,并聚焦具有圆角的材质外观选项。 我会分享它来帮助其他人,结果会是这样的: 非对焦模式下: 在聚焦模式下并激活下拉菜单: 目前唯一的问题是,如果有人可以通过某种方式集中下拉菜单(例如使用键盘上的 TAB 按钮),他/她可以在文本框中输入内容,但在触摸模式下,就不会有问题 这是布局中应使用的 XML: <com.google.android.material.textfield.TextInputLayout style="@style/CustomDropDownLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="50dp" android:layout_marginEnd="50dp" android:padding="5dp" app:boxCornerRadiusBottomEnd="18dp" app:boxCornerRadiusTopEnd="18dp" app:boxCornerRadiusBottomStart="18dp" app:boxCornerRadiusTopStart="18dp" app:boxStrokeWidth="0dp" > <AutoCompleteTextView android:background="@drawable/drop_down_background" android:id="@+id/userNameDropdown" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="none" /> </com.google.android.material.textfield.TextInputLayout> 将自定义样式放入:res\values\customstyles.xml文件: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="CustomDropDownLayout" parent="Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"> <item name="helperTextTextAppearance">@style/TextInputLayoutHelperStyle</item> <item name="errorTextAppearance">@style/TextInputLayoutErrorStyle</item> <item name="hintTextAppearance">@style/TextInputLayoutHintStyle</item> <item name="boxStrokeColor">@color/text_input_layout_dropdown_hint_color</item> </style> <style name="TextInputLayoutErrorStyle" parent="TextAppearance.Design.Error"> <item name="fontPath">fonts/Yekan-Bakh-Fat.ttf</item> </style> <style name="TextInputLayoutHintStyle" parent="TextAppearance.Design.Hint"> <item name="fontPath">fonts/Yekan-Bakh-Fat.ttf</item> </style> <style name="TextInputLayoutHelperStyle" parent="TextAppearance.Design.HelperText"> <item name="fontPath">fonts/Yekan-Bakh-Fat.ttf</item> </style> <style name="TextLabel" parent="TextAppearance.Design.Hint"> <item name="android:textSize">20sp</item> <item name="android:textColor">@color/input_layout_not_focused</item> </style> </resources> 并将此颜色放入单个文件中,例如 res\color\text_input_layout_dropdown_box_color.xml: <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/colorPrimary" android:state_focused="true" /> <item android:color="@color/colorPrimary" android:state_hovered="true" /> <item android:color="@color/colorPrimary" android:state_enabled="false" /> <item android:color="@color/input_layout_not_focused" /> <!-- unfocused --> </selector> 还有另一个名为 \res\color\text_input_layout_dropdown_hint_color.xml 的文件 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/colorPrimary" android:state_focused="true" /> <item android:color="@color/colorPrimary" android:state_hovered="true" /> <item android:color="@color/colorPrimary" android:state_enabled="false" /> <item android:color="@color/input_layout_not_focused" /> <!-- unfocused --> </selector> 并将文件放入可绘制对象中res\drawable\drop_down_background.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF" /> <corners android:radius="20dp" /> <stroke android:width="2dp" android:color="@color/text_input_layout_dropdown_box_color" /> </shape> 并使用这样的自定义适配器: ArrayAdapter dropDownAdpater = new ArrayAdapter<>(this, R.layout.dropdown_menu_popup_item, users); userNameDropDownMenuAutoCompleteTextView.setAdapter(dropDownAdpater); //set first item as selected one if (users != null && users.size() > 0) { userNameDropDownMenuAutoCompleteTextView.setText(dropDownAdpater.getItem(0).toString(), false); } userNameDropDownMenuAutoCompleteTextView.setDropDownBackgroundResource(R.drawable.drop_down_background); userNameDropDownMenuAutoCompleteTextView.setOnTouchListener((view, motionEvent) -> { userNameDropDownMenuAutoCompleteTextView.showDropDown(); return true; }); 最后在文件中的布局中添加一个文件res\layout\dropdown_menu_popup_item.xml: <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:ellipsize="end" android:maxLines="1" android:textAppearance="?attr/textAppearanceSubtitle1"/> 如果要删除下划线并保持大小,请使用以下代码:app:boxStrokeWidth="0dp" => android:id="@+id/textInputLayout2" android:layout_width="345dp" android:layout_height="65dp" android:background="color/transparent" android:backgroundTint="@color/transparent" app:endIconMode="dropdown_menu" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:boxBackgroundColor="@color/transparent" android:scrollIndicators="none" app:boxStrokeWidth="0dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:startIconDrawable="@drawable/people" app:startIconTint="@color/btnbackground"> <AutoCompleteTextView android:id="@+id/autotext" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_corner_border" android:inputType="text" android:textColor="@color/darkbringle" /> </com.google.android.material.textfield.TextInputLayout>

回答 6 投票 0

即使选择选项后,自动完成文本视图建议选项也会出现

我有一个自动完成文本视图,我正在做的是,在输入至少三个字符后,API 将调用,并且我从 api 中获取一个列表,我将其用作建议,但问题...

回答 2 投票 0

AutoCompleteTextView 不调整高度

我有一个带有自定义数组适配器的autoCompleteTextView,但是当我在用户键入时过滤结果时,列表视图似乎具有固定大小。 在第一个例子中,我有 3 个匹配项...

回答 1 投票 0

键盘弹出时如何自动调整文本字段

我尝试实现像 youtube 这样的搜索栏,但是当我在屏幕底部附近的视图中使用此搜索栏时,以及当我单击此搜索栏按键时,我遇到了问题...

回答 1 投票 0

AutocompleteTextView DismissDropDown() 不起作用

当文本更改以在远程数据库中搜索时,我有一个自动完成文本视图会触发 HTTP 请求。问题是,当我单击下拉列表中的某个项目时,TextWatcher 会将其检测为文本更改...

回答 1 投票 0

设置 AppCompatAutoCompleteTextView 下拉宽度和边距

我有以下 AppCompatAutoCompleteTextView - 我有以下 AppCompatAutoCompleteTextView - <androidx.appcompat.widget.AppCompatAutoCompleteTextView android:id="@+id/phoneNumberPrefixTextView" style="@style/PrimaryEditText" android:layout_width="match_parent" android:layout_height="@dimen/credit_card_form_height" android:gravity="center" android:dropDownWidth="match_parent" android:inputType="number" android:maxLength="3" /> 使用以下列表项 XML - <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingHorizontal="@dimen/padding_16"> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/country_edit_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/padding_16" android:layout_marginVertical="@dimen/padding_16" android:fontFamily="@font/montserrat_regular" android:textColor="@color/light_black" android:textSize="@dimen/text_size_normal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" tools:text="Israel" /> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/country_code_edit_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/padding_4" android:fontFamily="@font/montserrat_regular" android:textColor="@color/fog_medium" android:textSize="@dimen/text_size_normal" app:layout_constraintBottom_toBottomOf="@+id/country_edit_text" app:layout_constraintStart_toEndOf="@+id/country_edit_text" app:layout_constraintTop_toTopOf="@+id/country_edit_text" tools:text="+972" /> </androidx.constraintlayout.widget.ConstraintLayout> 以及以下 ArrayAdapter - class CountriesWithCodeAdapter( context: Context, resource: Int, private val items: MutableList<Countries.Country> ) : ArrayAdapter<Countries.Country>(context, resource, items) { private val originalList: List<Countries.Country> = items.toList() private var filteredItems: List<Countries.Country> = items.toList() override fun getItem(position: Int): Countries.Country { return items[position] } override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { val binding: CreditCardCountryWithCodeItemBinding = if (convertView != null) { CreditCardCountryWithCodeItemBinding.bind(convertView) } else { CreditCardCountryWithCodeItemBinding.inflate( LayoutInflater.from(context), parent, false ) } binding.countryEditText.text = items[position].name binding.countryCodeEditText.text = items[position].callingCode return binding.root } override fun getFilter(): Filter = object : Filter() { override fun performFiltering(constraint: CharSequence?): FilterResults { val charString = constraint.toString().lowercase(Locale.getDefault()).trim() filteredItems = if (charString.isEmpty()) { originalList.toList() } else { originalList.filter { country -> country.callingCode.contains(charString, ignoreCase = true) } } val filterResults = FilterResults() filterResults.values = filteredItems return filterResults } override fun publishResults(constraint: CharSequence?, results: FilterResults?) { @Suppress("UNCHECKED_CAST") filteredItems = results?.values as? List<Countries.Country> ?: emptyList() if (filteredItems.isEmpty()) { clear() notifyDataSetChanged() } else { clear() addAll(filteredItems) notifyDataSetChanged() } } } } 我正在尝试实现一种在下拉项中引入填充的行为。我在设置 android:dropDownWidth="match_parent" 的同时添加了列表项填充到根父级,但它似乎实际上没有做任何事情。我错过了什么? 假设您正在尝试在自动完成文本视图上实现水平边距,您可以尝试为自动完成文本视图创建单独的布局,并将其包含在父布局中,如下所示,这将在自动完成文本视图上设置 16 的水平填充/边距: - 父级布局 <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginHorizontal="16dp" tools:context=".messageCenter.MessageCenterFragment"> <include android:id="@+id/ilAutoCompleteTextView" layout="@layout/autocomplete_textview"/> </androidx.constraintlayout.widget.ConstraintLayout> 子布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="16dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp"> <AutoCompleteTextView android:id="@+id/autoCompleteTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#000" android:hint="Enter Your Name Here" android:padding="15dp" android:textColorHint="#fff" android:textStyle="bold|italic" /> </RelativeLayout> 现在是你的代码:- val fruits = arrayOf("Apple", "Banana", "Cherry", "Date", "Grape", "Kiwi", "Mango", "Pear") val adapter = ArrayAdapter(requireContext(), R.layout.select_dialog_item, fruits) //Getting the instance of AutoCompleteTextView val actv = binding.ilAutoCompleteTextView.autoCompleteTextView actv.threshold = 1 //will start working from first character actv.setAdapter(adapter) //setting the adapter data into the AutoCompleteTextView actv.setTextColor(Color.RED)

回答 1 投票 0

AutoCompleteTextField 列表不可见(在软键盘后面绘制)

我有一个问题,我无法解决...... 我有一项活动,用户可以添加一些信息,例如姓名等。它是用 Kotlin 和 Jetpack Compose 库编写的。一个字段是一个

回答 1 投票 0

Android AutoCompleteTextView 仅适用于第一个单词?

我正在尝试使用自动完成文本,但遇到了一个小问题。 当我尝试输入第一个单词作为国家之一时,它工作正常, 但如果我尝试输入任何其他内容并且...

回答 3 投票 0

Kotlin Android AutoCompleteTextView 我无法选择项目并获取它以进行搜索功能

我正在尝试使用 AutoCompleteTextView 来实现对数据库中项目列表的搜索。当我插入第一个字符时,我能够创建一个下拉菜单,但我无法从中选择一个......

回答 1 投票 0

将 AutoCompleteTextView 过滤器从“startsWith”更改为“Contains”?

我想更改 AutoCompleteTextView 中的默认过滤。默认过滤会查找以给定标记开头的所有字符串。我的项目要求过滤应该找到所有

回答 6 投票 0

AutoCompleteTextView 强制显示所有项目

我的应用程序中有一个时刻,我需要强制显示建议列表中的所有项目,无论用户输入什么。我怎样才能做到这一点? 我尝试做一些过滤,但对我来说......

回答 12 投票 0

在 AutocompleteTextView 中显示所有项目,无需编写文本

我有一个 AutocompleteTextView 并且它工作正常。当我写一个单词时,它会显示相关结果,但我想显示所有项目,而不在 AutocompleteTextView 中写任何单词。我怎样才能做到这一点。

回答 14 投票 0

在 Nativescript (Typescript) 中为 RadAutocompleteTextView 设置键盘类型

使用 NS 风格的 Typescript 我想设置一些自动完成的键盘类型。在一个上,我只需要数字,但在组件上没有找到任何“setInputType”方法或“keyboardType”属性......

回答 0 投票 0

在每行回收视图中动态添加芯片。

我有一个列表中,每一行将由多个芯片。在每一行,我可以能够键入任何东西和建议会来,如果我选择任何的建议,然后芯片将被添加在相同的......。

回答 1 投票 1

adjustResize"

The theory says that should do this but for some reason, it doesn't, so you have to do the same programmatically:

回答 8 投票 30

如何捕获AutoCompleteTextView箭头单击事件

我如何捕获对AutoCompleteTextView箭头的单击。 OnClick适用于该组件的其余部分,但是当您专门单击箭头时则无效。

回答 1 投票 0

在Android中更改AutoCompleteTextView的宽度

我已经为此困扰了几天。我的布局中有一个autoCompleteTextView和一个拆分为50/50的按钮。自动完成功能有效,但是建议仅占据屏幕的一半(相当于...

回答 4 投票 19

如何从AutoCompleteTextView所选项目创建Toast?

我是一名新手android学习者。当用户从AutoCompleteTextView中选择项目时,我试图创建烤面包。我正在从strings.xml读取值,它工作正常,但我是...

回答 4 投票 0

带有Firebase的Android AutoCompleteTextView

我正在使用FirebaseListAdapter填充我的AutoCompleteTextView。我想基于存储在Firebase上的GeoPoints返回数据库。键显示在Logcat中,但应用程序崩溃。 ...

回答 1 投票 1

© www.soinside.com 2019 - 2024. All rights reserved.