【问题标题】:How do I make an edit text view work like a search bar?如何使编辑文本视图像搜索栏一样工作?
【发布时间】:2021-03-24 22:56:23
【问题描述】:

我不想使用搜索视图或第三方库来实现搜索栏。我想使用可以彻底自定义的编辑文本视图来实现我的搜索栏。我该怎么做呢?我记得读过一些答案或文章,他们将属性设置为编辑文本以使其功能类似于搜索视图。类似:

        <EditText
            android:id="@+id/search_bar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:name="search view"/>

更新: A diagram to explain the architecture of my app 我在上面尝试做的还有许多其他并发症,所以现在我正在尝试一种不同的方法。这就是我想做的。我想将搜索视图用作菜单项的操作视图。我的应用程序遵循单一活动模式,我的活动有两个子片段。菜单和工具栏不需要在不同的片段中以不同的方式膨胀,因为它们在两个片段中看起来相同。但问题是,搜索视图应该在不同的片段中表现不同。所以在第一个片段中,当调用 onQuerySubmit() 时,我想使用导航操作并打开第二个片段并使用安全参数将query 传递给第二个片段。但是,在第二个片段中,我想根据第一个片段传入的查询或用户在到达第二个片段后可能输入的查询来显示搜索结果,因为这两个片段都应该进行搜索视图(这就是它在活动中被夸大的原因)。

我可以做的是从两个片段中获取对父活动的引用并使用onQueryTextSubmit(),但为此我必须在重置工具栏状态和配置的两个片段中使用setHasOptionsMenu(true)更改或分段事务,搜索视图折叠,数据丢失。我不能在任何一个片段的onViewCreated() 上使用onQueryTextSubmit(),因为活动的onCreateOptionsMenu()onCreate() 之后调用,并且如果我从活动中获得对搜索视图菜单项的引用并尝试对其执行任何操作从 Fragment 的 onViewCreated() 中的任何一个我都会得到一个空指针异常。

在获得对膨胀菜单或菜单项之一(在本例中为搜索视图)的引用后,有没有一种方法可以在调用活动的 onCreateOptionsMenu() 后使用它,但不必使用 @987654333 @ 和 onCreateOptionsMenu() 在任一片段中。

Here's 指向我的应用程序仓库的链接,以获取更多信息(如果需要)]

【问题讨论】:

  • 您只想从下拉列表中搜索值并选​​择它还是要保存它?
  • 也说 kotlin 或 java
  • @vishalN Kotlin 最好,但 Java 可以工作。我也不想保存它。

标签: android android-layout search textview android-jetpack


【解决方案1】:

确实不能用 EditText 但用 AutoCompleteTextview

 <AutoCompleteTextView
        android:id="@+id/search_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:name="search view"
        android:completionThreshold="1"
        android:completionHint="@string/message"
        android:inputType="text"
        />

上面的 xml 代码创建了一个自动完成文本输入字段,当您输入 1 个单词时,它将开始在下拉列表中显示匹配项(因为 completeionThreshold ="1")。这还不够,您还必须向其中添加一个适配器,它将在下拉列表中显示搜索到的项目。 https://developer.android.com/reference/kotlin/android/widget/AutoCompleteTextView 检查此链接以获取程序部分。

【讨论】:

  • 请查看更新,我改变了我的态度。谢谢你的回复。
【解决方案2】:

你可以使用原生 SearchView

<androidx.appcompat.widget.SearchView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"/>

更多请看:https://developer.android.com/reference/android/widget/SearchView

【讨论】:

  • 就像我说的,它的可定制性不够,所以我不想使用搜索视图。
  • 请查看我改变了方法的更新。
猜你喜欢
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多