【问题标题】:Android SearchView set Expanded by defaultAndroid SearchView 设置默认展开
【发布时间】:2016-02-18 19:38:42
【问题描述】:

我目前正在使用最低 API 级别 8 的 Android Studio 开发一个简单的应用程序,现在我目前在我的 LinearLayout 中使用 android.support.v7.widget.SearchView content_main.xml 布局,而不是 ACTIONBAR,现在问题是,默认情况下,我无法将 searchView 设置为Expanded,我已经在寻找解决方案,但我只得到了这个:

android:iconifiedByDefault="false"

这是我的 searchView 的完整代码

          <android.support.v7.widget.SearchView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/searchView"
            android:background="#00000000"
            android:iconifiedByDefault="false"
            android:layout_weight="1" />

但没有运气,它不起作用。任何人都可以帮助我吗?任何帮助,将不胜感激。非常感谢!

【问题讨论】:

  • 试试这个:searchItem.expandActionView();
  • 有没有不以编程方式设置的解决方案?我希望它设置在布局上。 :-) 谢谢!!!
  • 如果在xml文件中设置它没有帮助,那么你应该去编程部分。
  • aw,我对以编程方式设置它有一种不好的感觉,我的意思是,一旦应用程序启动,如果我没记错,第一个文件将被读取是 xml 布局?那么xml布局中的任何内容都将被java代码覆盖,我想让它组织起来,因为第一个文件将被读取是xml然后我想在xml上设置它,所以不会再覆盖了。跨度>
  • 无论如何,我尝试了您建议的代码,但不起作用?

标签: android android-layout android-studio searchview


【解决方案1】:

要使 SearchView 默认展开,请在初始化时调用 setIconifiedByDefault(false) (例如在 onCreate(..) 中)。我发现在大多数情况下,这会自动赋予它焦点,但如果不是简单地调用requestFocus() 也可以。

【讨论】:

    【解决方案2】:

    我使用下面的代码来展开搜索视图并同时放置光标:

    final SearchView sv = new SearchView(((MainActivity) getActivity()).getSupportActionBar().getThemedContext());
            sv.setIconifiedByDefault(true);
            sv.setFocusable(true);
            sv.setIconified(false);
            sv.clearFocus();
            sv.requestFocusFromTouch();
    

    【讨论】:

      【解决方案3】:

      好的,所以我解决了这个问题。对于任何想要使用 SearchView 支持库的人来说,这里是您可以自定义它的方法。

      <android.support.v7.widget.SearchView
          android:id="@+id/searchView"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          app:closeIcon="@drawable/ic_clear" // To set custom clear icon
          app:searchIcon="@drawable/ic_search" //To set custom search icon
          app:queryBackground="@color/transparent" // i decided to remove underline so i create a custom background for my searchView
          app:queryHint="@string/filterHint" //to set a custom Hint
          app:iconifiedByDefault="false" //And finally, to Expand it as default
      />
      

      正如我所说,我害怕通过 java 代码在运行时覆盖 xml 布局,所以为了使其在运行时组织起来并且不再覆盖,我就是这样做的。

      Reference

      谢谢你的帮助!!!

      【讨论】:

        猜你喜欢
        • 2021-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 1970-01-01
        • 2012-01-09
        • 2017-09-29
        • 2011-04-24
        相关资源
        最近更新 更多