标签: searchview

SearchView.isFocused 始终返回 false

我正在尝试确定SearchViewActionBar 中的 a 是否获得焦点。但是当我打电话时,SearchView.isFocused()我总是得到false结果,即使视图真正聚焦(内部有光标,并且显示软键盘)。

如何检查 a 是否SearchView聚焦?

android widget android-actionbar searchview

3
推荐指数
1
解决办法
1844
查看次数

Fragment 中的最近查询建议

我按照@David在本主题中建议的SearchView方式实现了。有谁知道如何将最近的查询建议添加到 Fragment 中的 SearchView 中? Fragment

android android-fragments searchview

3
推荐指数
1
解决办法
2495
查看次数

Android可搜索配置语音搜索语言

我正在使用此处定义的可搜索配置在我的活动中实现语音搜索。但是,如果设备的区域设置不同,设置android:voiceLanguage="tr"似乎不起作用。搜索应用程序对话框将在设备的区域设置以及搜索结果中打开。我使用SearchView,因此无法捕获该onSearchRequested函数,否则我可以以编程方式指定参数。设备区域设置为俄语,因此搜索查询会以西里尔语返回。如何强制以土耳其语或至少英语区域设置返回搜索结果?

可搜索.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
  android:label="@string/app_name"
  android:voiceLanguage="tr"
  android:voiceLanguageModel="web_search"
  android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" />
Run Code Online (Sandbox Code Playgroud)

搜索视图设置

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);

    searchItem = menu.findItem(R.id.search);
    searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setQueryHint(getString(R.string.search));
    searchView.setOnQueryTextListener(new SearchWatcher());
    if (searchManager != null)
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    return true;
}
Run Code Online (Sandbox Code Playgroud)

处理搜索结果

@Override
protected void onNewIntent(Intent intent) {
    setIntent(intent);
    handleIntent(intent);
}

private void handleIntent(Intent intent) {
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        searchView.setQuery(query, false);
    }
}
Run Code Online (Sandbox Code Playgroud)

android searchview android-search google-voice-search

3
推荐指数
1
解决办法
673
查看次数

我的应用程序中的SearchView似乎不起作用

我已经实现了以下代码,但我的SearchActivity :: OnCreate没有被调用.有人可以告诉我我错过了什么吗?

AndroidManifest.xml中:

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

    <uses-sdk android:minSdkVersion="14" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <meta-data android:name="android.app.default_searchable" android:value=".SearchActivity"/>
        <activity
            android:name=".Search_testActivity"
            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:name=".SearchActivity" android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.SAMPLE_CODE" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEARCH"/>
            </intent-filter>
            <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
        </activity>
    </application>

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

/res/xml/searchable.xml:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_name"
    android:hint="@string/description" >
</searchable>
Run Code Online (Sandbox Code Playgroud)

SearchActivity.java:

public class SearchActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    { …
Run Code Online (Sandbox Code Playgroud)

android searchview

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

Android Action Bar SearchView NullPointerException adjustDropDownSizeAndPosition

与SearchView交互时或者与Searchview加载的活动时会出现此问题.在setIconifiedByDefault(true)与SearchView交互时加载活动后发生使用问题,但在setIconifiedByDefault(false)活动加载时使用问题时.

LogCat中输出以下错误:

java.lang.NullPointerException
at android.widget.SearchView.adjustDropDownSizeAndPosition(SearchView.java:1244)
Run Code Online (Sandbox Code Playgroud)

这是代码:

ExampleActivity.java

public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.example, menu);

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

        SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);

        SearchView search = (SearchView) menu.findItem(R.id.search).getActionView();

        search.setSearchableInfo(manager.getSearchableInfo(getComponentName()));

        search.setIconifiedByDefault(true);

        search.setOnQueryTextListener(new OnQueryTextListener() { 

            @Override 
            public boolean onQueryTextSubmit(String query) { 

                // Perform search

                return true; 

            }

        });

    }

    return true;

}
Run Code Online (Sandbox Code Playgroud)

菜单/的example.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/search"
        android:title="Search"
        android:showAsAction="ifRoom"
        android:actionViewClass="android.widget.SearchView" />

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

XML/searchable.xml

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

searchable.xml中使用的"搜索"字符串在values/strings.xml中定义.此外,在AndroidManifest.xml的activity标记中正确引用了searchable.xml文件:

<meta-data …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception android-actionbar searchview

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

Android:如何使SearchView占用ActionBar中的整个水平空间?

在下面的屏幕截图中,SearchView窗口小部件ActionBar不占用整个可用空间.

在此输入图像描述

我需要它占据所有水平空间ActionBar(因此它横跨整个屏幕).

我尝试了什么:

  • 以编程方式,尝试了这个onCreateOptionsMenu:

    View searchViewView = (View) searchView;
    searchViewView.getLayoutParams().width=LayoutParams.MATCH_PARENT;`
    
    Run Code Online (Sandbox Code Playgroud)

    这给出了:

    java.lang.NullPointerException: Attempt to write to
    field 'int android.view.ViewGroup$LayoutParams.width' on a null
    object reference ...       
    TestActionBarTwo.MainActivity.onCreateOptionsMenu(MainActivity.java:57)
    
    Run Code Online (Sandbox Code Playgroud)
  • 并在菜单资源中:

    android:layout_width="match_parent"似乎并没有造成任何影响.

  • 我也试过android:layout_weight="1"(假设 ActionBar有a LinearLayout),但这也不起作用.

那么有没有一种方法SearchView(没有图标化)占据整个水平空间ActionBar


编辑1

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        Log.i(TAG, "onCreateOptionsMenu OF MainActivity CALLED."); //check

        getMenuInflater().inflate(R.menu.activity_main_action_bar_menu, menu);

        getSupportActionBar().setDisplayShowHomeEnabled(false);
        getSupportActionBar().setDisplayShowTitleEnabled(false);

        // SearchAction
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        MenuItem searchMenuItem = menu.findItem(R.id.action_search);
        SearchView searchView …
Run Code Online (Sandbox Code Playgroud)

android android-layout layoutparams android-actionbar searchview

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

getActionView使用searchview返回null

试图让searchview在app上运行.

sdk min 17 max 22

在模拟器api上测试18

菜单xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">    
    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        app:showAsAction="never"/>
    <item android:id="@+id/search" 
        android:icon="@drawable/ic_action_search" 
        android:title="@string/search_title" 
        app:showAsAction="ifRoom|collapseActionView" 
        android:orderInCategory="200" 
        app:actionViewClass="android.support.v7.widget.SearchView">        
    </item> 
    <item android:id="@+id/scan" 
        android:title="@string/scan" 
        android:showAsAction="ifRoom"
        android:orderInCategory="300">        
    </item>   
</menu>
Run Code Online (Sandbox Code Playgroud)

onCreateOptionsMenu

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    // Inflate the menu; this adds items to the action bar if it is present.
    inflater.inflate(R.menu.material_toolbar, menu);

    SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
    searchView.setOnQueryTextListener(new OnQueryTextListener() {           
        @Override
        public boolean onQueryTextSubmit(String query) {
            Log.d(TAG, "onQueryTextSubmit");
            return false;
        }

        @Override
        public …
Run Code Online (Sandbox Code Playgroud)

eclipse android searchview

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


使用RecyclerView的SearchView过滤器

我试图在Fragment中使用建议(过滤器)实现SearchView,但我还没有管理它.我几乎尝试了每个教程,但没有任何方法适合我.我将不胜感激任何帮助.谢谢

XML ......

    <!--appBar layout-->
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appBarLayout"
        android:fitsSystemWindows="true"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize">

        <!--searchView layout-->
        <android.support.v7.widget.SearchView
            android:id="@+id/search_view"
            app:layout_scrollFlags="scroll|enterAlways"
            android:iconifiedByDefault="false"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:closeIcon="@drawable/ic_clear_white_18dp"
            app:searchIcon="@drawable/ic_search_white_24dp"
            app:queryHint="@string/search_contact"
            app:iconifiedByDefault="false"
            android:background="@color/colorPrimary"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

       </android.support.design.widget.AppBarLayout>

        <!-- recycler view-->
        <android.support.v7.widget.RecyclerView
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            android:id="@+id/recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)

分段

@Override
    public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_contact_list, container, false);

        searchView = (SearchView)view.findViewById(R.id.search_view);
        fabButton = (FloatingActionButton)view.findViewById(R.id.fab_button);

        //recycler view
        recyclerView = (RecyclerView)view.findViewById(R.id.recycler_view);
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
        contacts = SugarRecord.listAll(Contact.class);
        contactsAdapter = new ContactsAdapter(getActivity(), contacts);
        recyclerView.setAdapter(contactsAdapter);

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override …
Run Code Online (Sandbox Code Playgroud)

android adapter searchview recycler-adapter android-recyclerview

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

如何在Android中设置SearchView文本

我尝试找到一种为SearchView设置文本的方法,但找不到任何内容?有谁知道这样做的任何方法吗?例如这样的事情

 searchView.setText("blah blah");
Run Code Online (Sandbox Code Playgroud)

android searchview android-search

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