【问题标题】:Android searchview remove hint paddingAndroid searchview 删除提示填充
【发布时间】:2016-09-06 16:11:45
【问题描述】:

我正在使用我的应用程序,并且在工具栏中有一个搜索视图,但提示在光标后有一个小填充。

如何去除内边距?

这是我的搜索视图:

我想要这样:

这是我的 onCreateOptionsMenu:

SearchManager searchManager=(SearchManager)getSystemService(Context.SEARCH_SERVICE);
    MenuItem item=menu.findItem(R.id.procura);
    Drawable drawable = menu.findItem(R.id.procura).getIcon();
    if (drawable != null) {
        drawable.mutate();
        drawable.setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_ATOP);
    }

    searchView=(SearchView) MenuItemCompat.getActionView(item);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setQueryHint(getResources().getString(R.string.app_hint));

    try {
        Field mDrawable = SearchView.class.getDeclaredField("mSearchHintIcon");
        mDrawable.setAccessible(true);
        Drawable drw = (Drawable) mDrawable.get(searchView);
        drw.setBounds(0, 0, 0, 0);
    } catch (Exception e) {
        e.printStackTrace();
    }

我的风格:

<style name="SearchViewMy" parent="Widget.AppCompat.Light.SearchView">
    <item name="submitBackground">@color/colorPrimary</item>
    <item name="queryBackground">@color/colorPrimary</item>
    <item name="android:colorFocusedHighlight">@color/colorAccent</item>
</style>

我的菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item
    android:id="@+id/procura"
    android:title="@string/app_hint"
    android:icon="@mipmap/ic_search_black_24dp"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="android.support.v7.widget.SearchView"/>

【问题讨论】:

  • 请发布任何相关代码,如果我们可以复制您的问题,它将帮助人们,然后我们可以尝试解决它!
  • 没有代码我们将无法为您提供帮助
  • 我添加了 java 代码和我的样式,如果您需要更多询问我
  • 你能说说你为什么使用反射而不遵循文档中的例子吗?我不明白您在此处尝试实现的自定义。
  • 我尝试关注文档,因为我在文档搜索视图中问这个问题在光标后没有这个填充我的想法是删除它,此时我删除了查询文本视图的下划线并删除提示图标,按照文档只需要删除该填充,如第二张图片。

标签: java android searchview


【解决方案1】:

我找到了解决问题的方法。

只需在样式中添加这个:

<item name="searchHintIcon">@null</item>

现在的样式是:

<style name="SearchViewMy" parent="Widget.AppCompat.Light.SearchView">
    <item name="submitBackground">@color/colorPrimary</item>
    <item name="queryBackground">@color/colorPrimary</item>
    <item name="searchHintIcon">@null</item>
    <item name="android:colorFocusedHighlight">@color/colorAccent</item>
</style>

而 onCreateOptionsMenu 现在是:

// Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);


    SearchManager searchManager=(SearchManager)getSystemService(Context.SEARCH_SERVICE);
    MenuItem item=menu.findItem(R.id.procura);

    searchView=(SearchView) MenuItemCompat.getActionView(item);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setQueryHint(getResources().getString(R.string.app_hint));


    return true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2016-01-27
    • 2017-03-08
    • 2013-05-18
    • 1970-01-01
    相关资源
    最近更新 更多