SherlockActionBar与AutoCompleteTextView和其他项目

时间:2013-04-11 11:26:23

标签: android android-actionbar actionbarsherlock

我希望将操作栏 AutoCompleteTextView(可折叠)作为menuItem 以及其他menuItems(如删除)。我使用 SherlockActionBar的库使其与较低版本(如2.2,2.3)兼容。

我的要求是显示

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

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

  3. 现在,当用户点击searchIcon时,它应该展开以覆盖整个actionBar(hidinig删除图标)。

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

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

    我不知道如何使用SherlockActionBar库实现相同的功能。我试图通过跟踪给出的样本来实现相同的但是无法实现这一点。

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

    提前致谢。

3 个答案:

答案 0 :(得分: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);
        }

答案 1 :(得分: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 Search http://img6.imageshack.us/img6/7448/androidsearchactionbar.png

答案 2 :(得分:0)

我完成了所需的实施。感谢Rafal Galka&amp; andrehsouza。我必须将两种解决方案(由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" />

Bingo !!!