中心搜索查看在操作栏(Center SearchView in Action Bar)

2019-07-04 17:16发布

我怎样才能居中操作栏里面的的ActionView(特别是搜索查看)?

正如所看到的谷歌图书应用程式:

谷歌图书应用搜索查看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>

有没有办法模仿的图书搜索查看的行为?

Answer 1:

一个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属性设置为falseSearchView这迫使它出现扩大,不只是作为一个图标。 这可能需要你编程隐藏softkeyboard或活动开始时将推出开放。



Answer 2:

看看这里 。 你可以只使用android:actionViewClass =“android.widget.SearchView”属性,这应该只是罚款(记住,你可以在Java中搜索查看参考,并改变那里的提示,如果这就是你想要的)。



文章来源: Center SearchView in Action Bar