【发布时间】: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