【问题标题】:AppCompat SearchView icon can't be GONEAppCompat SearchView 图标不能消失
【发布时间】:2014-01-13 15:51:22
【问题描述】:

我正在使用 android.support.v7.widget.SearchView,我需要让这个搜索图标消失。 我有 SearchView 的自定义 ActionBar 布局:

        <android.support.v7.widget.SearchView
        android:id="@+id/search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"/>

初始化搜索视图:

    searchView = (SearchView) findViewById(R.id.search);

    AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(R.id.search_src_text);
    searchText.setPadding(0, 0, 0, -padding);
    searchText.setHintTextColor(getResources().getColor(R.color.light_gray));

    View searchPlate = searchView.findViewById(R.id.search_plate);
    searchPlate.setBackgroundResource(R.drawable.searchview_textfield);

    View close = searchPlate.findViewById(R.id.search_close_btn);
    close.setBackgroundResource(R.drawable.selectable_background_orange);

我试图像这样自定义 searchIcon:

ImageView icon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);

尝试从这里设置所有内容Android SearchView Icon,但不是那个 ImageView。 谁能帮帮我?

【问题讨论】:

  • 即兴发挥,那可能不是ImageView,而是一个复合可绘制对象。
  • 也许吧,但是为了什么?...我不能让它消失...
  • 您可以记录图标以检查它是否是ImageView(在我的情况下确实是ImageView)。请说明问题所在。
  • 顺便说一句,你确定你得到了SearchView 的正确实例吗?当操作栏实际上包含两个搜索视图(一个是通过自定义布局添加的,第二个是在 onCreateOptionsMenu 中添加的)时,我遇到了类似的问题。
  • 看来我找到了答案hereSearchView 布局似乎与 setIconifiedByDefault 不同。我的是false,而你的是true(我想)。请检查它是否有帮助。

标签: android customization android-support-library searchview android-appcompat


【解决方案1】:
public static void setSearchViewEditTextHint(Context context, SearchView searchView, int stringId){
    int searchMagIconId = context.getResources().getIdentifier("android:id/search_src_text", null, null);
    TextView textView = (TextView) searchView.findViewById(searchMagIconId);
    if (null != textView) {
        textView.setHint(stringId);
    }
}

函数调用:

setSearchViewEditTextHint(this, searchView, R.string.emptyString);

【讨论】:

    【解决方案2】:

    嘿,对不起,我参加聚会有点晚了。我不得不做类似的事情。我需要更改图标。这有点像黑客,但我认为这是最好的解决方案。查看支持库代码 AOSP 使用“Search_mag_icon”作为您要查找的图标。在您的代码中,您可以执行以下操作: int searchMagIcon = getResources().getIdentifier("search_mag_icon", "id", "android"); ImageView SearchHintIcon = (ImageView) searchView.findViewById(searchMagIcon); 这将保存该 ImageView。然后,您可以简单地更改它或在您的情况下将其设置为 null。

    编辑您还可以使用mSearch.getSearchView().setIconifiedByDefault()mSearch.getSearchView().setIconified()。我发现您必须设置默认设置才能看到结果。

    希望对您有所帮助。 :-)

    【讨论】:

      猜你喜欢
      • 2015-04-28
      • 2017-07-15
      • 1970-01-01
      • 2014-12-21
      • 2016-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      相关资源
      最近更新 更多