【问题标题】:Customize close icon in searchview在搜索视图中自定义关闭图标
【发布时间】:2015-06-04 20:36:25
【问题描述】:

如何更改 searchview 的 closeIcon 的 res。使用 Holo.light 作为父级。我已经尝试了很多东西!这个名字不在 Holo 上!!

<item name="android:searchViewCloseIcon">@drawable/ic_search_close</item>

【问题讨论】:

    标签: android android-actionbar searchview


    【解决方案1】:

    如果您使用的是androidx.appcompat.widget.SearchView,您还可以在布局 XML 中对其进行自定义:

    app:closeIcon="@drawable/ic_search_close"
    

    【讨论】:

      【解决方案2】:

      如果您使用的是 AppCompat v21 compile 'com.android.support:appcompat-v7:22.2.0',您可以使用:

      values/themes.xml:
      <style name=”Theme.MyTheme” parent=”Theme.AppCompat”>
          <item name=”searchViewStyle”>@style/MySearchViewStyle</item>
      </style>
      <style name=”MySearchViewStyle” parent=”Widget.AppCompat.SearchView”>
          <!-- Background for the search query section (e.g. EditText) -->
          <item name="queryBackground">...</item>
          <!-- Background for the actions section (e.g. voice, submit) -->
          <item name="submitBackground">...</item>
          <!-- Close button icon -->
          <item name="closeIcon">...</item>
          <!-- Search button icon -->
          <item name="searchIcon">...</item>
          <!-- Go/commit button icon -->
          <item name="goIcon">...</item>
          <!-- Voice search button icon -->
          <item name="voiceIcon">...</item>
          <!-- Commit icon shown in the query suggestion row -->
          <item name="commitIcon">...</item>
          <!-- Layout for query suggestion rows -->
          <item name="suggestionRowLayout">...</item>
      </style>
      

      在这里找到:http://android-developers.blogspot.nl/2014/10/appcompat-v21-material-design-for-pre.html

      如果你想要一致性,我建议使用这个库。

      如果你真的不想使用这个库,你可以用它来改变关闭图标:

      int closeButtonId = getResources().getIdentifier("android:id/search_close_btn", null, null);  
      ImageView closeButtonImage = (ImageView) searchView.findViewById(closeButtonId);  
      closeButtonImage.setImageResource(R.drawable.ic_action_cancel);  
      

      从这里得到它:http://nlopez.io/how-to-style-the-actionbar-searchview-programmatically/

      【讨论】:

      • 我在设计 Appcompat 主题时遇到问题,所以我改用全息主题!
      • @IamaDeveloper 然后看第二部分。您可以使用第二部分更改普通主题上的关闭按钮。但我仍然建议再试一次并使用AppCompat
      • 谢谢这工作。为什么要应用兼容?我必须更改所有代码。喜欢 actionbar 到 supportactionbar ...而且我无法设置 appcompat 样式
      • AppCompat 是为了在 android 版本之间保持一致。我认为它现在是做事的标准方式,谷歌让它高度可定制。你也可以看看我的链接,有更多关于如何使用AppCompat进行样式设置的信息
      【解决方案3】:

      这对我有用:

      private void changeCloseIcon(SearchView searchView) {    
          ImageView closeButtonImage = searchView.findViewById(R.id.search_close_btn);
          closeButtonImage.setImageResource(R.drawable.icon_toolbar_close);
      }
      
       @Override
       public boolean onCreateOptionsMenu(final Menu menu) {
          getMenuInflater().inflate(R.menu.menu, menu);
          MenuItem searchItem = menu.findItem(R.id.action_search);
          SearchView searchView = (SearchView) searchItem.getActionView();
          changeCloseIcon(searchView);      
          return true;
      }
      

      【讨论】:

        【解决方案4】:

        在 Kotlin 中使用如下。在 onCreateOptionsMenu 方法中处理很重要。

           import androidx.appcompat.widget.SearchView
        
        
            override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
            inflater.inflate(R.menu.main_menu, menu)
        
            val searchItem = menu.findItem(R.id.action_search)
            val searchView: SearchView = searchItem.actionView as SearchView
            val closeIcon = searchView.findViewById<ImageView>(R.id.search_close_btn)
            closeIcon.setBackgroundColor(
                ContextCompat.getColor(
                    requireContext(),
                    R.color.radio_tab_text_color
                )
            )
        }
        

        用于实现可绘制文件;

        closeIcon.setBackgroundResource(R.drawable.ic_close)
        

        注意:检查是否导入了androidx.appcompat.widget.SearchView

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-04-17
          • 1970-01-01
          • 2012-12-17
          • 1970-01-01
          • 1970-01-01
          • 2016-08-12
          • 1970-01-01
          相关资源
          最近更新 更多