如何将ActionView(特别是SearchView)置于Action Bar的中心?
如Google图书应用中所示:
Google Books app SearchView http://i46.tinypic.com/2z909is.png
我当前的布局设置(search_layout.xml
):
<?xml version="1.0" encoding="utf-8"?>
<SearchView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:queryHint="@string/search_hint" />
我的操作栏XML文件(menu.xml
):
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:icon="@+android:drawable/ic_menu_search"
android:title="@string/search"
android:showAsAction="always|collapseActionView"
android:id="@+id/searchMenuItem"
android:actionLayout="@layout/search_layout" />
</menu>
有没有办法模仿图书的SearchView的行为?
答案 0 :(得分:17)
据我所知,View
中的ActionBar
无法实现以Action Items
为中心的xml menu
。但是,可以通过将自定义布局设置为ActionBar
来实现。一个基本的例子:
Activity
:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setCustomView(R.layout.actionbar_layout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
其中actionbar_layout
是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<SearchView
android:id="@+id/mySearchView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:iconifiedByDefault="false" />
</RelativeLayout>
在7英寸平板电脑上创建:
请注意iconifiedByDefault
上的false
属性设置为SearchView
,迫使其展开展开,而不仅仅是图标。这可能要求您hide the softkeyboard programmatically或在活动开始时将其启动。
答案 1 :(得分:-1)
看看here。你可以使用android:actionViewClass =&#34; android.widget.SearchView&#34;属性,这应该工作得很好(请记住,您可以在Java中获取对searchView的引用,并在那里更改提示,如果这是您想要的)。