在不使用可搜索活动的情况下实现搜索栏

时间:2014-12-08 20:23:59

标签: android listview search android-actionbar optionmenu

是否可以在OptionMenu上实现搜索栏(使用EditText)并向其添加TextChangedListener? 我的MainActivity有3个可滑动的标签和3个不同的ListView,所以我想在ActionBar上添加一个EditText的TextChangedListener(如果可能的话)是一个更好的选择,而不是创建Searchable Activity。然后,我可以轻松获取当前ListView并使用SearchBar中的文本对其进行过滤,如下例所示。但是,他的EditText不在ActionBar上。 http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/

1 个答案:

答案 0 :(得分:2)

是的,有可能。只需在您的活动中填写此类菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_settings"  app:actionLayout="@layout/action_item_edit_text"
         app:showAsAction="always" />
</menu>

action_item_edit_text.xml

<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/editInput"
    android:layout_width="140dp"
    android:layout_height="?attr/actionBarSize"
    android:hint="Write something"
    android:singleLine="true"
    android:background="@android:color/white"
    android:textColorHint="#BBBBBB"
    android:textColor="@android:color/black"
    android:textSize="14sp"
    android:padding="6dp"/>

然后,您可以参考onCreateOptionsMenu中的编辑文字:

EditText editText = (EditText) MenuItemCompat.getActionView(menu.findItem(R.id.action_settings));
editText.addTextChangedListener(new TextWatcher() { \\... });