0

我想要一个带有AutoCompleteTextView(Collapsible)的操作栏作为 menuItem以及其他 menuItems 如 Delete。我正在使用SherlockActionBar 的库使其与较低版本(如 2.2、2.3)兼容。

我的要求是显示

  1. actionBar 最右侧的 searchIcon(用于可折叠的 AutoCompleteTextView)和

  2. 上述搜索图标左侧的删除图标。

现在,当用户点击 searchIcon 时,它应该会自行扩展以覆盖整个 actionBar(隐藏删除图标)。

我曾尝试将 iconsearch(for AutoCompleteTextView) 和 deleteButton 都包装在布局中,并将此布局提供为 SherlockActionBar 库提供的操作栏的视图,但它没有显示任何内容。

然后我尝试添加 iconSearch(属性值为可折叠)和 deleteButton 作为单独的菜单项(显示在 SherlockActionBar 示例中),但它只显示 actionSearch。

我不知道如何使用 SherlockActionBar 库来实现相同的功能。我试图通过遵循给出的示例来实现相同但无法实现这一点。

任何帮助,将不胜感激...

提前致谢。

4

3 回答 3

2

首先从搜索 (layout_search.xml) 创建您的 xml 布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <AutoCompleteTextView
        android:id="@+id/edit_search"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Search" >

        <requestFocus />
    </AutoCompleteTextView>

    <ImageView
        android:id="@+id/img_clear"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:src="@drawable/ic_menu_clear" />

</FrameLayout>

在您的菜单 xml 中:

<item
    android:id="@+id/menu_search"
    android:icon="@drawable/ic_menu_search"
    android:showAsAction="always|collapseActionView"
    android:title="Search">
</item>

创建菜单:

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getSupportMenuInflater().inflate(R.menuyour_menu, menu);        
            menu.getItem(0).setActionView(R.layout.layout_search);
            AutoCompleteTextView search = (AutoCompleteTextView) mI.getActionView().findViewById(R.id.edit_search); 
            ImageView imgClear = (ImageView) menu.getItem(0).getActionView().findViewById(R.id.img_clear).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                search.setText("");
            }
        });

            return super.onCreateOptionsMenu(menu);
        }
于 2013-04-15T14:55:43.220 回答
1

我认为你应该使用现成的解决方案com.actionbarsherlock.widget.SearchView

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_remove"
        android:icon="@drawable/content_remove"
        android:showAsAction="ifRoom"
        android:title="@string/menu_remove" />
    <item
        android:id="@+id/menu_search"
        android:actionViewClass="com.actionbarsherlock.widget.SearchView"
        android:icon="@drawable/action_search"
        android:showAsAction="always|collapseActionView"
        android:title="@string/search" />
</menu>

MainActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the options menu from XML
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.main, menu);

    return super.onCreateOptionsMenu(menu);
}

结果: Android ActionBarSherlock 搜索 http://img6.imageshack.us/img6/7448/androidsearchactionbar.png

于 2013-04-16T09:25:10.877 回答
0

我完成了所需的实施。感谢Rafal Galkaandrehsouza。我必须结合这两种解决方案(由Rafal Galkaandrehsouza提供)以达到预期的效果。

我所做的是,我创建了一个包含两个操作项的 menu.xml。其中一个是带有普通图标和标题的标准操作项,另一个是自定义视图。而这个自定义视图只不过是一个简单的 AutoCompleteTextView,它已在 res/layout 文件夹下定义。

所以这是我的res/menu/menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_xxx"
        android:showAsAction="ifRoom|withText"
        android:icon="@drawable/drawablexxx"
        android:title="@string/xxx"/>

    <item
        android:id="@+id/menu_search"
        android:actionLayout="@layout/collapsibleactionview"
        android:showAsAction="always|collapseActionView"
        android:title="@string/action_search"/>
</menu>

并且collapsibleactionview.xml已在res/layout下定义为:

<?xml version="1.0" encoding="utf-8"?>
<AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/edittextcollapsible"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint search"
    android:imeOptions="actionSearch"
    android:inputType="text" />

答对了 !!!

于 2013-05-21T11:43:58.353 回答