【问题标题】:Hide close button in android Search View在android搜索视图中隐藏关闭按钮
【发布时间】:2020-09-08 14:07:14
【问题描述】:

我已经实现了一个android搜索视图。当搜索视图获得焦点时,右侧的关闭按钮[x]会显示出来。如何在android搜索视图中隐藏关闭按钮

【问题讨论】:

  • 我认为你不能这样做,因为你必须使用自定义 sercview

标签: android searchview


【解决方案1】:

像这样改变你的主题:

对于

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarWidgetTheme">@style/AppTheme.WidgetTheme</item>
</style>

<style name="AppTheme.WidgetTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="searchViewCloseIcon">@android:color/transparent</item>
</style>

对于 v21 及更高版本:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="searchViewStyle">@style/AppTheme.SearchView</item>
</style>

<style name="AppTheme.SearchView" parent="Widget.AppCompat.SearchView">
    <item name="closeIcon">@android:color/transparent</item>
</style>

还可以查看this 以获得更多自定义。

【讨论】:

    【解决方案2】:

    我认为,如果您使用支持库,@Anton 建议的第一部分可能不起作用,因此在 values/styles.xml 中写入类似以下内容就足够了:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="searchViewStyle">@style/SearchViewStyleAfterV21</item>
    </style>
    ...
    <style name="SearchViewStyleAfterV21" parent="Widget.AppCompat.SearchView">
        <item name="closeIcon">@android:color/transparent</item>
    </style>
    

    【讨论】:

      【解决方案3】:

      你试过这个set 'x' button programicaly 吗?

      如果您想以编程方式执行此操作,请在 onQueryTextListener 中添加一段隐藏“x”按钮的代码:

         searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
              @Override
              public boolean onQueryTextChange(String query) {
                  ImageView searchViewIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
                  searchViewIcon.setVisibility(View.GONE);
                  return true;
              }
         });
      

      【讨论】:

        【解决方案4】:

        在您的 XML 布局文件中:

        app:closeIcon="@android:color/transparent"
        

        然后禁用按钮:

        ImageView btnClose = searchView.findViewById(R.id.search_close_btn);
        btnClose.setEnabled(false);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-29
          • 2020-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-22
          • 1970-01-01
          • 2014-11-11
          相关资源
          最近更新 更多