Android 安卓系统,如何关闭ListView时";“后退”;按下按钮关闭searchView

Android 安卓系统,如何关闭ListView时";“后退”;按下按钮关闭searchView,android,listview,listener,searchview,Android,Listview,Listener,Searchview,我有一个带有searchView图标的操作栏。我点击searchView图标,出现softInputMode键盘,我的ListView出现用于搜索。但是,当您关闭searchView时,searchView会关闭,但我无法让ListView在searchView关闭时也关闭 下面是我在activity_maps.xml中为ListView编写的代码 <ListView android:id="@+id/list" android:layout_width="0dp"

我有一个带有searchView图标的操作栏。我点击searchView图标,出现softInputMode键盘,我的ListView出现用于搜索。但是,当您关闭searchView时,searchView会关闭,但我无法让ListView在searchView关闭时也关闭

下面是我在activity_maps.xml中为ListView编写的代码

<ListView
    android:id="@+id/list"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="#ffffff"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0"
    tools:layout_editor_absoluteX="0dp"
    />
我想在单击searchView打开并弹出键盘时显示listView

    searchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {

               lv.setVisibility(View.INVISIBLE);

            return false;
        }
    });
在上面的代码中,我希望listView关闭、消失、不可见,但事实并非如此

顺便说一句,我指的是关闭searchView时动作栏中的“后退”按钮

当searchView和键盘关闭时,我希望ListView也关闭,但由于某些原因,代码无法识别,ListView永远不会关闭


如何关闭ListView?

根据Android参考,如果要覆盖清除文本字段并取消它的默认行为,请尝试返回true,否则返回false

请参阅此链接:


您只需在活动中重写此方法即可:

@Override
public void onBackPressed() {
    if(lv.getVisibility()==View.VISIBLE){
      lv.setVisibility(View.INVISIBLE);
      return;
    }
    super.onBackPressed();
}

希望这有帮助。

你确定onClose函数返回false吗?false,true,我尝试了两者,结果相同。你检查过了吗:当按下Android后退按钮时,这项功能有效。但我想让它成为,当您单击searchView并单击菜单_main.xml中app:showAsAction=“ifRoom | collapseActionView”随附的后退按钮时,listView会随着searchView的关闭而关闭。您知道一个代码可以让searchView的后退按钮关闭listView,而不仅仅是Android的后退按钮吗?目前searchView的后退按钮只是关闭searchView,但我也希望它同时关闭listView。
    searchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {

               lv.setVisibility(View.INVISIBLE);

            return false;
        }
    });
  searchView.setOnCloseListener(new SearchView.OnCloseListener() {
    @Override
    public boolean onClose() {

           lv.setVisibility(View.INVISIBLE);

        return true;//Should work.
    }
});
@Override
public void onBackPressed() {
    if(lv.getVisibility()==View.VISIBLE){
      lv.setVisibility(View.INVISIBLE);
      return;
    }
    super.onBackPressed();
}