标签: searchview

SearchView小部件未显示在Action Bar中

这可以视为本课题的延伸

我已经在代码中添加了以下内容来获取searchView Widget

RES /菜单/ main_activity_actions.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Search, should appear as action button -->
    <item android:id="@+id/action_search"
          android:icon="@drawable/ic_action_search"
          android:title="@string/action_search"
          android:showAsAction="always"
          android:actionViewClass="android.support.v7.widget.SearchView" />
    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:showAsAction="never" />
</menu>
Run Code Online (Sandbox Code Playgroud)

Mainactivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is …
Run Code Online (Sandbox Code Playgroud)

android android-actionbar searchview android-4.2-jelly-bean

4
推荐指数
1
解决办法
4457
查看次数

使用 ActionBar 选项卡在 ViewPager 中的片段更改时重置 SearchView

我已经使用 ActionBar 选项卡实现了两个片段。我正在使用夏洛克碎片。当我开始一个片段时,我在操作栏上创建了一个搜索视图。

问题是:当我在第一个片段上搜索某些内容并且没有关闭搜索视图或删除文本时,我移动到下一个片段,我得到一个折叠的搜索视图,这很好。但是当我再次回到我的第一个片段时,我看到一个像以前一样排序的列表,但搜索视图已折叠。取回原始列表的唯一方法是单击一次搜索视图并将其关闭。

当我移动到第二个片段时如何重置第一个片段上的搜索视图,或者当我来到第一个片段时如何保持搜索视图打开?

任何一种解决方案都可以。

<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"
 >

<item android:id="@+id/action_search"
    android:title="search"
    android:icon="@drawable/search"
    android:orderInCategory="100"
    android:showAsAction="always|collapseActionView"
    android:actionViewClass="com.actionbarsherlock.widget.SearchView" />

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

这就是我在片段中膨胀的方式

   @Override
        public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
        {
        super.onCreateOptionsMenu(menu, inflater);

        inflater.inflate(R.menu.main, menu);
        SearchView sv = (SearchView)getActivity().findViewById(R.id.action_search);
          sv.setOnQueryTextListener(new OnQueryTextListener() {
              @Override
              public boolean onQueryTextSubmit(String query) {
                  //...
                  return false;
              }
              @Override
              public boolean onQueryTextChange(String newText) {
                  bindingData.resetData();


                  bindingData.getFilter().filter(newText.toString());
                  return false;
              }
          });
    }
Run Code Online (Sandbox Code Playgroud)

android-fragments searchview

4
推荐指数
2
解决办法
3816
查看次数

SearchView AppCompatActivity中的空指针?

我只是一个初学者,我在这里搜索了这个问题,发现4-5问题但是没有帮助我.我只是在Actionbar中尝试searchView,我的活动是AppCompatActivity我的代码在下面.我在这个活动中使用工具栏.并使用这个.OncreatOptionMenu:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    SearchManager SManager =  (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    MenuItem searchMenuItem = menu.findItem(R.id.action_search);
    SearchView searchViewAction = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
    searchViewAction.setSearchableInfo(SManager.getSearchableInfo(getComponentName()));
    searchViewAction.setIconifiedByDefault(false);

    return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

XML:

<item android:id="@+id/action_search"
    android:title="action_search"
    MainActivity:showAsAction="ifRoom"
    MainActivity:actionViewClass="android.support.v7.widget.SearchView" />
Run Code Online (Sandbox Code Playgroud)

和logcat:

java.lang.NullPointerException
        at algonation.com.spm.MainActivity.onCreateOptionsMenu(MainActivity.java:183)
        at android.app.Activity.onCreatePanelMenu(Activity.java:2571)
        at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:277)
        at android.support.v7.internal.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:84)
        at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallback.onCreatePanelMenu(AppCompatDelegateImplBase.java:251)
        at android.support.v7.internal.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:84)
        at android.support.v7.internal.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:449)
        at android.support.v7.internal.app.ToolbarActionBar$1.run(ToolbarActionBar.java:66)
        at android.os.Handler.handleCallback(Handler.java:808)
        at android.os.Handler.dispatchMessage(Handler.java:103)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:5292)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
        at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

如果你需要MainActivity的完整代码,请告诉我..非常感谢你.

android searchview android-actionbar-compat

4
推荐指数
1
解决办法
2907
查看次数

为什么 setOnQueryTextListener() 收到“空对象引用”错误?

我正在尝试将搜索图标添加到工具栏,按下该图标将打开搜索栏。

像这样

但我尝试的每种方法都不起作用,并且没有图标出现。现在我收到此错误,但找不到解决方案:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener)' on a null object reference
    at pl.michalz.hideonscrollexample.activity.partthree.PartThreeActivity.onCreateOptionsMenu(PartThreeActivity.java:62)
Run Code Online (Sandbox Code Playgroud)

这是我的主要活动

public class PartThreeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.AppThemeBlue);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_part_three);

        initToolbar();
        initViewPagerAndTabs();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);

        MenuItem seachItem = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView)
                MenuItemCompat.getActionView(seachItem);

        searchView.setOnQueryTextListener(
            new SearchView.OnQueryTextListener(){

            @Override
            public boolean onQueryTextSubmit(String query) {
                Log.d("myApp", …
Run Code Online (Sandbox Code Playgroud)

xml android searchview

4
推荐指数
1
解决办法
9984
查看次数

折叠后 SearchView 从工具栏中消失

我创建了一个小例子来展示我的问题。主布局,工具栏中有 SearchView 和 3 个按钮: 1) 设置文本 - 展开搜索视图并设置查询 2) 展开 - 展开搜索视图 3) 折叠 - 折叠搜索视图

Activity_main.xml
android:fitsSystemWindows="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:orientation="vertical"
        tools:context="com.porn.MainActivity">

        <android.support.design.widget.AppBarLayout 
            android:layout_width="368dp"
            android:layout_height="wrap_content"
            tools:layout_editor_absoluteX="8dp"
            tools:layout_editor_absoluteY="0dp">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:contentInsetStartWithNavigation="0dp">

            </android.support.v7.widget.Toolbar>

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

        <Button
            android:id="@+id/setTextBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Set text" />

        <Button
            android:id="@+id/expandBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Expand" />

        <Button
            android:id="@+id/collapseBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Collapse" />
    </LinearLayout>      
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

MainActivity.java

public class MainActivity extends AppCompatActivity {
    private MenuItem toolbarSearchMenuItem;
    private SearchView toolbarSearchView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); …
Run Code Online (Sandbox Code Playgroud)

android searchview

4
推荐指数
1
解决办法
1697
查看次数

按下后退按钮/折叠搜索字段时,Android搜索菜单项会消失

我正在使用Android SearchView在我的操作栏中有一个搜索按钮.我在YouTube上关注了谷歌开发者的这个教程,并根据自己的需要添加了一些调整.但是,每当我退出单击按钮时出现的搜索字段时,搜索按钮就会消失!

这是我的onCreateOptionsMenu和onOptionsItemSelected函数

onCreateOptionsMenu:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);


    return true;
}
Run Code Online (Sandbox Code Playgroud)

onOptionsItemSelected:

@Override
public boolean onOptionsItemSelected(final MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    switch (id) {
        case R.id.action_settings:
            // …
Run Code Online (Sandbox Code Playgroud)

java xml android android-actionbar searchview

4
推荐指数
1
解决办法
1237
查看次数

将提交按钮添加到 SearchView

我尝试实现一个SearchViewin ToolBar. 当我尝试使用此选项提交查询时,提交按钮位于ToolBar. 但是,我需要SearchView.

我怎样才能定制SearchView

android kotlin searchview android-toolbar

4
推荐指数
1
解决办法
1478
查看次数

Kotlin 导航片段中的 searchview.setonquerytextlistener() 类型不匹配

我收到“OnQueryTextListener 需要类型不匹配!” 尝试在导航片段中用 Kotlin 实现 searchview 时出错。我已经搜索了尽可能多的示例和 stackoverflow 问题,一切都表明我的代码应该是正确的。请注意,我的搜索视图是持久的(不是菜单的一部分),因此我无法执行 menu.finditem。

在此输入图像描述

这是我的 HomeFragment 代码:

class HomeFragment : Fragment() {
private lateinit var homeViewModel: HomeViewModel

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    return inflater.inflate(R.layout.fragment_home, container, false)
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    println("***************** Home Fragment *******************")

    searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
        override fun onQueryTextSubmit(query: String): Boolean {
            // task HERE
            return false
        }
        override fun onQueryTextChange(newText: String): Boolean {
            return false
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

和布局代码:

<androidx.constraintlayout.widget.ConstraintLayout 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" …
Run Code Online (Sandbox Code Playgroud)

android kotlin searchview

4
推荐指数
1
解决办法
2371
查看次数

Android - 使用Android支持库时无法在SearchWidget中找到TextView

我使用以下代码片段在SearchView小部件中查找TextView.

    int autoCompleteTextViewID = getResources().getIdentifier("android:id/search_src_text", null, null);
    mQueryTextView = (AutoCompleteTextView) searchView.findViewById(autoCompleteTextViewID);
Run Code Online (Sandbox Code Playgroud)

但是,当切换到android.support.v7.appcompat支持库时,它不再起作用.

我想这是因为支持库不使用android:"android:id/search_src_text"的前缀,但我不知道它应该是什么.我试过了

getResources().getIdentifier("android.support.v7.appcompat:id/search_src_text", null, null);
Run Code Online (Sandbox Code Playgroud)

PS更多代码片段:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
        // this xml has funshion:actionViewClass="android.support.v7.widget.SearchView"
        getMenuInflater().inflate(R.menu.search_activity_actions_v7, menu);

        android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) 
                MenuItemCompat.getActionView(menu.findItem(R.id.action_search_v7));
        if (searchView==null){
            FSLogcat.e(TAG, "searchView is null!");
        }else{
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
            searchView.setIconifiedByDefault(false);
            //searchView.requestFocus();
            searchView.setSubmitButtonEnabled(true);

            findSearchViewTextView(searchView);
            updateSearchViewText();
        }   

    return super.onCreateOptionsMenu(menu);
}

private void findSearchViewTextView(View searchView) {
    int autoCompleteTextViewID = getResources().getIdentifier("android:id/search_src_text", null, null);
    mQueryTextView = (AutoCompleteTextView) searchView.findViewById(autoCompleteTextViewID);
}

private void updateSearchViewText() …
Run Code Online (Sandbox Code Playgroud)

search android searchview android-support-library

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

SearchView:键盘不显示按钮完成

android 4.3.

片段:

 <android.support.v7.widget.SearchView
        android:id="@+id/searchView"
        style="@style/Widget.AppCompat.SearchView.ActionBar"
        android:layout_width="0dp"
        android:layout_height="30dp"
        android:layout_marginEnd="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginStart="20dp"
        android:background="@drawable/search_view_bg"
        android:imeOptions="actionDone"
        android:maxLines="1"
        android:inputType="text"
        android:theme="@style/SearchViewTheme"
        app:defaultQueryHint="@null"
        app:layout_constraintLeft_toLeftOf="@+id/searchViewContainer"
        app:layout_constraintRight_toRightOf="@+id/searchViewContainer"
        app:layout_constraintTop_toTopOf="@+id/searchViewContainer"
        app:searchHintIcon="@null" />
Run Code Online (Sandbox Code Playgroud)

我想在点击SearchView时显示键盘上的Done按钮.所以我设置android:imeOptions="actionDone".但它没有帮助:

结果如下:

键盘

android searchview

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