我正在创建一个自定义SearchView,但到目前为止,如果用户点击searchView小部件,我没有找到(点击)事件或监听器.所以SearchView很接近,用户点击搜索图标(哪个监听器?!),SearchView被打开.见下图.我需要那个事件,因为我想在用户打开searchView后更改UI

编辑: 到目前为止我尝试的是
setOnClickListener 到SearchView元素 - >但它只在SearchView打开时触发(第2张图片) 
搜索了SearchViewApi,但是没有听众那个动作(或者我是盲人?)
尝试使用onWindowFocusChangedsearchView 解决方法,但由于searchView隐藏在某种youtube/facebook侧边栏中,这不起作用
有任何想法吗?我也附上了我的SearchView代码,但不认为代码是错误的.只是没有听众.顺便说一句:欢迎任何变通方法.但如果SearchView在开始时关闭,那就太好了!(如上图所示)
public class AmplifySearchView extends SearchView implements
        OnQueryTextListener, OnFocusChangeListener,
        OnCloseListener {
    private static final String DEBUG_TAG = "AmplifySeachView";
    private Context context;
    private DataBaseController datasource;
    private StationListView searchResultListView;
    private TextView noResultTextView;
    private Boolean searchStarted = false;
    public AmplifySearchView(Context context) {
        super(context);
        this.context = context;
    }
    public AmplifySearchView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
    }
    public void initSearchView(StationListView view, TextView noResultTextView) {
        this.searchResultListView = view; …我的SearchView建议有问题,当我SearchView在建议中写一个字符时没有来.但是当我写下两个字符时EditText,我SearchView的建议会来.
所以我想在我写一个角色时,我的建议已经来了EditText,我SearchView该怎么办?
我的MainActivity代码:
private SearchView mSearchView;
private SimpleCursorAdapter mAdapter;
private ArrayList<String> mList;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mList = new ArrayList<String>();
    mList.add("Test 1");
    mList.add("Test 2");
    mList.add("Test 3");
    mList.add("Test 4");
    mList.add("Test 5");
    mList.add("Test 6");
    mList.add("Test 7");
    mList.add("Test 8");
    mList.add("Test 9");
    mList.add("Test 10");
    ListView listView = (ListView) findViewById(android.R.id.list);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mList);
    listView.setAdapter(adapter);
    mAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.suggestion, null, new String[] {""}, new int[] …我是android开发新手.我想要的是使用动作栏搜索视图小部件搜索我的列表视图.我该如何实现搜索功能.我缺少的是搜索功能.我看过一些搜索功能,但它基于editText.请帮忙.
这是我的代码:
menu.xml文件
   <item android:id="@+id/menu_search"
          android:title="@string/menu_search"
          android:icon="@android:drawable/ic_menu_search"
          android:showAsAction="ifRoom|collapseActionView"
          android:actionViewClass="android.widget.SearchView" />
在我的manifest.xml中
<activity
            android:name=".MainActivity"
             <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>
            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable">
            </meta-data>
        </activity>
在我的MainActivity.java上
  protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
                this.lv = (ListView) findViewById(R.id.listView);
                this.databaseAccess = DatabaseAccess.getInstance(getApplicationContext());
                this.persons= getPersonList();
                Adapter adapter = new Adapter(this, persons);
                this.lv.setAdapter(adapter);
}
    public List<Person> getPersonList(){
            databaseAccess.open();
            List<Person> person= databaseAccess.getPersons();
            databaseAccess.close();
            return person;
        }
 private class Adapter extends ArrayAdapter<Person> {
        public Adapter(Context context, List<Person> objects) {
            super(context, 0, objects);
        }
        @Override
        public View getView(int position, …如何在Gmail应用中构建App Bar?
那是当导航抽屉是
A /折叠
B /扩展的
"搜索图标"[属于具有电子邮件列表的片段]在片段的右边缘之后.
案例A和B见下图.
假设使用Android 5中的AppBar,例如:
TNX!
我需要在我的 Android 应用程序中实现一个搜索界面,该界面可以RecyclerView过滤ViewPager.
我已经实现了EditText和SearchView小部件并尝试查看差异。
我感兴趣的听众是:
   myEditText.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {}
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
            public void onTextChanged(CharSequence s, int start, int before, int count) {}
        });
和 :
mySearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextChange(String newText) {
        textView.setText(newText);
        return true;
    }
    @Override
    public boolean onQueryTextSubmit(String query) {
        textView.setText(query);
        return true;
    }
SearchView我是否缺少一些允许和不允许的重要功能EditText?
有了这两个小部件,我可以使用单个“搜索视图”RecyclerView在内部进行搜索吗?ViewPager
我不想要一个ACTION_SEARCH或任何添加的搜索对话框视图。
提前致谢 …
android android-edittext android-viewpager searchview android-recyclerview
嗨,我想制作带有搜索框的可滚动工具栏。滚动工具栏上的应该是隐藏工具栏并显示搜索框。给我一些建议,说明如何为我的应用程序构建这种UI。
在这里我想要这样的东西。
在这里,我要发布我的xml设计,该设计正在执行该设计附近的功能,但仍然需要提供。
<?xml version="1.0" encoding="utf-8"?>
<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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/coordinatorLayout"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toTopOf="@+id/navigation"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:context=".MainActivity">
        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/appBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.Dark">
            <com.google.android.material.appbar.CollapsingToolbarLayout
                android:id="@+id/collapsingToolbarLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_scrollFlags="scroll|enterAlways|snap|exitUntilCollapsed"
                app:statusBarScrim="?attr/colorAccent">
                <androidx.constraintlayout.motion.widget.MotionLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    app:layoutDescription="@xml/collapsing_toolbar">
                    <View
                        android:id="@+id/toolbars"
                        android:layout_width="match_parent"
                        android:layout_height="120dp"
                        android:background="#efefef" />
                    <androidx.appcompat.widget.SearchView
                        android:id="@+id/search_view"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="16dp"
                        android:layout_marginTop="56dp"
                        android:layout_marginEnd="16dp"
                        android:background="@android:color/white"
                        android:elevation="4dp"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent" />
                </androidx.constraintlayout.motion.widget.MotionLayout>
                <androidx.appcompat.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="#efefef"
                    android:minHeight="?attr/actionBarSize"
                    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                    app:layout_collapseMode="pin"
                    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
                    <androidx.appcompat.widget.SearchView
                        android:id="@+id/search_view_2"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:visibility="gone"
                        android:layout_marginStart="16dp"
                        android:layout_marginEnd="?android:attr/actionBarSize"
                        android:background="@android:color/white"
                        android:elevation="4dp"
                        app:layout_constraintEnd_toEndOf="parent"
                        app:layout_constraintStart_toStartOf="parent"
                        app:layout_constraintTop_toTopOf="parent" />
                </androidx.appcompat.widget.Toolbar> …android android-search android-toolbar android-collapsingtoolbarlayout
我想在我的SearchView上有历史记录,我一直在谷歌搜索,我发现的唯一明智的(?)教程就是这个,但这只是为了姜饼,而不是API> 14.
然后我找到了这段代码:
String[] columnNames = {"_id","text"};
        MatrixCursor cursor = new MatrixCursor(columnNames);
        String[] array = {"Snääälla", "bla bla bla", "Jävla piss"}; //if strings are in resources
        String[] temp = new String[2];
        int id = 0;
        for(String item : array){
            temp[0] = Integer.toString(id++);
            temp[1] = item;
            cursor.addRow(temp);
        }
        String[] from = {"text"};
        int[] to = {android.R.id.text1};
        CursorAdapter ad = new SimpleCursorAdapter(this.getActivity(), android.R.layout.simple_list_item_1, cursor, from, to);
        mSearchView.setSuggestionsAdapter(ad);
并且该代码只能工作一半,因为它没有显示您已经编写的结果,它显示了所有项目.
我只是希望它看起来像这样:

这是我目前添加SearchView的代码:
RES /菜单/ menu.xml文件:
<item android:id="@+id/fragment_searchmenuitem"
      android:icon="@drawable/ic_search_white"
      android:title="@string/menu_search"
      android:showAsAction="collapseActionView|ifRoom"
      android:actionViewClass="android.widget.SearchView" /> …我在我的应用程序中实现搜索小部件时遇到问题.它似乎无法找到菜单项的"动作视图",但它正好找到该项目.
我四处寻找答案,并没有看到明确的解决方案.
这是我在XML中声明的菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/group_search_box"
    android:title="@string/search_label"
    android:icon="@drawable/ic_action_action_search"
    app:showAsAction="ifRoom|collapseActionView"
    app:actionViewClass="android.support.v7.widget.SearchView" />
以下是它的实现方式.
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
    MenuItem searchMenuItem = menu.findItem(R.id.group_search_box);
    SearchView searchView = (SearchView) searchMenuItem.getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
这是我正在添加的库,也许我添加了一个不正确的库?
compile 'com.android.support:support-v4:+'
compile 'com.android.support:appcompat-v7:+'
最后这里是崩溃日志
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)' on a null object reference
        at com.example.myapp.fragments.GroupFragment.onCreateOptionsMenu(GroupFragment.java:88)
        at android.app.Fragment.performCreateOptionsMenu(Fragment.java:1780)
        at android.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:1927)
        at android.app.Activity.onCreatePanelMenu(Activity.java:2539)
        at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224)
        at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:436)
        at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:800)
        at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:221)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
        at android.view.Choreographer.doCallbacks(Choreographer.java:574)
        at android.view.Choreographer.doFrame(Choreographer.java:543)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5017) …这是我的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E0E0E0"
android:fitsSystemWindows="true"
tools:context="com.ccb.lldm.lldmhimnario.Cantos">
<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:elevation="25dp"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimaryDark"
        app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_cantos" />
</android.support.design.widget.CoordinatorLayout>
这是我的Java:
public class Cantos extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cantos);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    toolbar.setLogo(R.mipmap.ic_launcher);
    toolbar.setTitle("Cantos");
    toolbar.setTitleTextColor(getColor(R.color.colorPrimary));
}
}
我想知道如何在操作栏中添加搜索。因此,当我输入字符时,名称/对象就会出现。先感谢您。(我的XML文件也正确吗?)
android ×9
searchview ×3
search ×2
android-collapsingtoolbarlayout ×1
java ×1
listview ×1
xml ×1