我希望将操作栏与 AutoCompleteTextView(可折叠)作为menuItem 以及其他menuItems(如删除)。我使用 SherlockActionBar的库使其与较低版本(如2.2,2.3)兼容。
我的要求是显示
在actionBar最右侧的searchIcon(用于可折叠的AutoCompleteTextView)和
上述searchIcon左侧的删除图标。
现在,当用户点击searchIcon时,它应该展开以覆盖整个actionBar(hidinig删除图标)。
我曾尝试在一个布局中包装iconsearch(用于AutoCompleteTextView)和deleteButton,并将此布局作为SherlockActionBar库提供的操作栏的视图,但它没有显示任何内容。
然后我尝试将iconSearch(属性值为collapsible)和deleteButton添加为单独的菜单项(显示在SherlockActionBar示例中),但它只显示actionSearch。
我不知道如何使用SherlockActionBar库实现相同的功能。我试图通过跟踪给出的样本来实现相同的但是无法实现这一点。
任何帮助将不胜感激......
提前致谢。
答案 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 Galka和andrehsouza提供)结合起来,以达到预期的效果。
我做的是,我创建了一个包含两个操作项的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 !!!