标签: searchview

如何在单击其他活动时使SearchView失去焦点并崩溃

在我的应用程序中,我正在创建一个搜索界面,SearchView当它失去并分别获得焦点时折叠和扩展.然而,失败的焦点只发生在两种情况:

  1. 按下后退按钮时.

  2. SearchView按下旁边的主页图标时.

如果用户不仅点击这两件事,而且点击屏幕上的任何其他东西(例如,任何按钮或屏幕的任何空白部分而没有视图),我希望它失去焦点(并因此崩溃).

java android searchview

9
推荐指数
1
解决办法
8103
查看次数

按Enter键时未启动搜索活动

按Enter键时搜索活动未启动.搜索视图在操作栏上显示得很好.但是当我输入搜索查询并按Enter键时

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
   <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.punit.rateit"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"

    >
    <activity
        android:name="com.punit.rateit.MainActivity"
        android:label="@string/app_name" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:theme="@style/Theme.AppCompat.Light"
              android:name=".SearchPageActivity">
          <meta-data android:name="android.app.default_searchable" android:value=".SearchResultsActivity" /> 
      <intent-filter>
         <action android:name="android.intent.action.SearchPage" />
      </intent-filter>
    </activity>

   <activity android:name="com.punit.rateit.SearchResultsActivity"   android:launchMode="singleTop" >
  <intent-filter>
    <action android:name="android.intent.action.SEARCH" />
     <meta-data android:name="android.app.searchable"
               android:resource="@xml/searchable"/>
    </intent-filter>
   </activity>       

    </application>

 </manifest>
Run Code Online (Sandbox Code Playgroud)

这是Menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:com.punit.rateit="http://schemas.android.com/apk/res-auto" >
<!-- Search, should appear as action button -->
<item android:id="@+id/search"
      android:icon="@drawable/ic_search" …
Run Code Online (Sandbox Code Playgroud)

android searchview

9
推荐指数
3
解决办法
5547
查看次数

恢复android的搜索视图小部件的状态

我在我的操作栏中有一个搜索视图,我希望在方向更改后恢复查询.我怎样才能做到这一点?使用捆绑包设置查询SearchView.setQuery(query, false);不起作用,因为searchview ""会在扩展后立即将其查询设置为.

下面是我的相关代码onActivityCreated:

if(savedInstanceState != null && savedInstanceState.containsKey(BUNDLE_KEY_SEARCH))
    mCurFilter = savedInstanceState.getString(BUNDLE_KEY_SEARCH);
Run Code Online (Sandbox Code Playgroud)

在这里我的onSaveInstanceState:

savedInstanceState.putString(BUNDLE_KEY_SEARCH, mCurFilter);
super.onSaveInstanceState(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)

那么我怎么能恢复它的状态,因为我无法使用它setQuery?谢谢大家

java android android-widget android-fragments searchview

9
推荐指数
1
解决办法
3888
查看次数

SearchView过滤和设置建议

我很擅长使用SearchView.我需要一个功能,我有一个ActionBar我有的功能Search.当我点击"搜索"时,建议应显示在"搜索"字段下方的列表中.

到目前为止我做了什么: 在menu.xml中添加了搜索,并onCreateOptionsMenu()在我初始化SearchView的地方编写了代码并setSuggestionsAdapter实现了setOnQueryTextListener.

结果:我进入应用程序,点击搜索图标,显示建议.我输入一个字母,对匹配的字母进行排序.我键入第二个字母,它没有显示建议.此外,我关闭搜索视图并再次打开它,键盘打开,但列表中的建议未显示.

我需要的:根据用户输入的字符进行过滤.即使它不止一个角色.始终显示建议,默认为一个包含所有列表项,或者是在用户类型时排序的建议.

我在Android的SearchView类中看到,他们将文本设置为空并且也忽略了建议.但我不想要这个.

我被困在这里,不知道如何继续.请帮我.这是我的适配器代码:

public class ExampleAdapter extends CursorAdapter implements Filterable {

    private ArrayList<String> items;
    private ArrayList<String> orig;

    public ExampleAdapter(Context context, Cursor cursor,
            ArrayList<String> items) {
        super(context, cursor, false);
        this.items = new ArrayList<String>();
        this.items = items;
        orig = new ArrayList<String>();
        orig.addAll(items);
    }

    @Override
    public int getCount() {
        return items.size();
    }

    @Override
    public Filter getFilter() {
        return new Filter() { …
Run Code Online (Sandbox Code Playgroud)

android filtering search-suggestion searchview

9
推荐指数
1
解决办法
7293
查看次数

搜索小部件在发布apk中不起作用

我有一个奇怪的问题(至少对我而言).我的应用程序适用于调试apk.但是当我创建发布apk时,它会在searchwidget中显示错误.我正在使用支持库'com.android.support:appcompat-v7:21.0.3'

这是我的代码

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub

    MenuInflater mi = getMenuInflater();
    mi.inflate(R.menu.searchmenu, menu);

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    final MenuItem searchItem = menu.findItem(R.id.searchwidget);
    final SearchView searchView = (SearchView) MenuItemCompat
            .getActionView(searchItem);
    if(null!=searchManager ) {   
     searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    }
    searchView.setIconifiedByDefault(false);

    SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextChange(String newText) {
            // this is your adapter that will be filtered
            Programs.this.adapter.getFilter().filter(newText);
            return true;
        }

        @Override
        public boolean onQueryTextSubmit(String query) {
            // this is your adapter that will …
Run Code Online (Sandbox Code Playgroud)

search android widget android-appcompat searchview

9
推荐指数
1
解决办法
904
查看次数

Android SDK 22 - SearchView渲染问题

我们刚刚将本地Android SDK更新到新版本22,我们也尝试更新我们的应用程序,但似乎是Android Studio布局设计视图中的SearchView渲染问题:每次设计师尝试渲染SearchView元素,它引发了一个异常:

Android.widget.SearchView的android.content.res.TypedArray.hasValueOrEmpty(TypedArray.java:845)中的java.lang.NullPointerException(SearchView.java:295).(SearchView.java:258)在android.widget.SearchView.(SearchView.java:254)java.lang.reflect.Constructor.newInstance(Constructor.java:422)在android.view.LayoutInflater.createView(LayoutInflater.java:607)的android.view .LayoutInflater.onCreateView(LayoutInflater.java:682)位于android.view.LayoutInflater中的android.view.LayoutInflater.RinoutInflater中的android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:806)中的android.view.LayoutInflater.DeCot LayoutInflater_Delegate.java:64)android.view.LayoutInflater.inflate(LayoutInflater.java:782),android.view.LayoutInflater.inflate(LayoutInflater.java:504),android.view.LayoutInflater.inflate(LayoutInflater.java:385) )

即使我们在新布局文件中从左侧工具栏创建新元素,也会出现这种情况.任何的想法?

渲染错误

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <SearchView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/searchView" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android android-layout searchview android-studio

9
推荐指数
1
解决办法
4536
查看次数

使用片段在工具栏中实现SearchView

当前情景

我的应用主页包含导航抽屉,因此我将视图加载为片段.我在工具栏中也有搜索图标.我在menu.xml中实现了它.下一步我SearchView通过以下问题的答案实现搜索图标 在工具栏中实现搜索.

这在搜索视图显示时工作正常,也可以被解雇.

问题

我可以为搜索视图实现搜索查询,但我无法理解如何继续.问题是,onCreateOptionsMenuActivity和搜索视图中的所有代码都在Activity.我不明白的是必须搜索的数据Fragment是在Activity课堂上加载的.我将点击另一个Web服务来获取搜索结果,但我将如何Fragment再次对搜索到的数据进行通信.我无法理解如何在这种情况下继续前进.

android android-fragments searchview navigation-drawer

9
推荐指数
1
解决办法
2万
查看次数

SearchView中的文本输入不显示

几天前我注意到我输入的文字SearchView没有显示出来.也许这个问题在很久以前开始了,我没有注意到它,但我知道当我第一次设置搜索功能时,一切都运行良好.

这是一个截图(我已经输入了文本,你可以看到它没有显示):

在此输入图像描述

我已经尝试SearchView这个SO问题改变文本的颜色,并且我也尝试在我的可搜索配置XML文件中更改文本颜色.在我发现这些都不起作用后,我撤消了我的更改,以便您可以看到我目前在下面的代码:

MainActivity.java

@Override
public boolean onCreateOptionsMenu(Menu) { 

    ...

    // Associate searchable configuration with the SearchView
    SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) searchMenuItem.getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchResultsActivity.class)));
    // Note: getSearchableInfo(getComponentName()) will not work on all flavours
    // because of a difference in app IDs

}
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的是new ComponentName(...)代替,getSearchableInfo(getComponentName())因为我在不同的口味中使用不同的包名称.

上面的活动SearchView是显示的位置.结果显示在另一项活动中.

searchable.xml

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_name"
    android:hint="@string/search_hint" />
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中

    ...

    <activity
        android:name=".ui.MainActivity"
        android:label="@string/title_activity_main"
        android:theme="@style/AppTheme">
        <meta-data …
Run Code Online (Sandbox Code Playgroud)

android searchview android-search

9
推荐指数
2
解决办法
2665
查看次数

展开时删除Android SearchView填充

我正在尝试在我的Android应用程序中实现SearchView,但在扩展它时会有额外的填充.

SearchView集成在菜单中,当应用程序启动时,我在工具栏中有一个搜索图标.当我单击该搜索按钮时,SearchView会扩展,但有一个额外的填充.

以下是一些照片,以便您了解问题:

这是初始工具栏 初始工具栏

当我点击搜索图标时,这就是我得到的扩展搜索

我找到了一个解决方案,在SearchView中添加一个负左边填充(-16dp): searchView.setPadding(getResources().getDimensionPixelSize(R.dimen.search_view_minus), 0, 0, 0);

不幸的是,如果我使用此解决方案,工具栏右侧的搜索图标将受到影响(不知何故,SearchView会越过搜索图标).

这是我的菜单:

<?xml version="1.0" encoding="utf-8"?>
<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/action_search"
        android:icon="@drawable/ic_search_white_48dp"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView"
        android:title="Cauta..."/>

</menu>
Run Code Online (Sandbox Code Playgroud)

这是我的工具栏布局:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar_home"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    app:theme="@style/AppTheme.Title"
    app:titleMarginStart="0dp"
    app:navigationIcon="@drawable/ic_menu_white_24dp"
    app:contentInsetStartWithNavigation="0dp"
    app:contentInsetEndWithActions="0dp"
    app:contentInsetStart="0dp"
    app:contentInsetEnd="0dp" />
Run Code Online (Sandbox Code Playgroud)

这是应用于SearchView的一些自定义样式:

<style name="searchStyle" parent="Widget.AppCompat.SearchView.ActionBar">
    <item name="queryHint">@string/search_hint</item>
    <item name="searchIcon">@drawable/ic_search_white_24dp</item>
    <item name="voiceIcon">@drawable/ic_keyboard_voice_white_24dp</item>
    <item name="android:textColorHint">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我的问题有适当的解决方案吗?

android padding extra searchview

9
推荐指数
0
解决办法
2034
查看次数

可以在Android上使用Espresso测试支持v7 SearchView

我在Android上对我的应用程序进行了一些检测测试,但是碰壁了.我有一个来自android的v7支持库的SearchView,我想以某种方式测试它.我猜它不能直接点击,因为我用传统的方法尝试过:

onView(withId(R.id.search_view)).perform(click())
Run Code Online (Sandbox Code Playgroud)

有没有办法SearchView用Espresso 进行测试?

android searchview android-support-library android-espresso

9
推荐指数
1
解决办法
2379
查看次数