android – 使用扩展的SearchView删除actionbar的图标/标题?

我创建了一个新项目,目标是api 11及以上版本.我有一个活动,我希望认情况下扩展SearchView:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);

    inflater.inflate(R.menu.menu_search, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search); 
    mSearchView = (SearchView) searchItem.getActionView();
    mSearchView.setIconifiedByDefault(false);
}

哪个有效,但我不希望动作栏上有任何图标或标题,只是搜索视图.我尝试通过以下方式摆脱我的标题和图标:

getActionBar().setdisplayHomeAsUpEnabled(false);
getActionBar().setdisplayShowTitleEnabled(false);
getActionBar().setIcon(android.R.color.transparent);

但我的操作栏仍然在搜索视图的左侧有这个填充:

有办法摆脱它吗?

谢谢

——–编辑——————–

这是我的全部活动:

public class Greatandroid extends FragmentActivity {
    private SearchView mSearchView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getActionBar().setdisplayShowHomeEnabled(false);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        getMenuInflater().inflate(R.menu.menu_search, menu);
        MenuItem mi = menu.findItem(R.id.action_search);
        mSearchView = (SearchView) mi.getActionView();
        mSearchView.setIconifiedByDefault(false);

        return true;
    }
}

这是菜单xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:id="@+id/action_search"
      android:title="@string/search"
      android:icon="@android:drawable/ic_menu_search"
      android:showAsAction="always"
      android:actionViewClass="android.widget.SearchView" />
</menu>

解决方法:

即使图标是透明的,它仍占用空间:

getActionBar().setIcon(android.R.color.transparent);

删除此行并添加

getActionBar().setdisplayShowHomeEnabled(false);

现在,您应该让SearchView占用所有可用空间.

可折叠的操作项具有最大宽度.我能想到的唯一解决方法如下:

public class Greatandroid extends FragmentActivity {
    private SearchView mSearchView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getActionBar().setdisplayShowHomeEnabled(false);
        getActionBar().setdisplayShowTitleEnabled(false);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        getMenuInflater().inflate(R.menu.menu_search, menu);
        MenuItem mi = menu.findItem(R.id.action_search);
        mSearchView = (SearchView) mi.getActionView();
        mSearchView.setIconifiedByDefault(false);

        // You can use display.getSize(Point) from API 13 onwards.
        // For API 11 and 12, use display.getWidth()

        final Point p = new Point();

        getwindowManager().getDefaultdisplay().getSize(p);

        // Create LayoutParams with width set to screen's width
        LayoutParams params = new LayoutParams(p.x, LayoutParams.MATCH_PARENT);

        mSearchView.setLayoutParams(params);

        return true;
    }
}

虽然看起来左边还有空格,但你可以使用mSearchView.setBackgroundColor(Color.RED);看到确实没有.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...