安卓,如何关闭列表视图"Back"按下按钮关闭搜索视图



我有一个带有搜索视图图标的动作栏。我单击搜索视图图标,出现SoftInputMode键盘,然后出现我的ListView进行搜索。但是,当您转到Close搜索视图时,搜索视图将关闭,但是当搜索视图关闭时,我也无法关闭listView。

这是我的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"
    />

mapactivity.java

    ArrayAdapter<String> adapter; 

    @Override
   public boolean onCreateOptionsMenu(final Menu menu){
    final ListView lv = (ListView) findViewById(R.id.list);
    ArrayList<String> arrayList = new ArrayList<>();                      
      arrayList.addAll(Arrays.asList(getResources().getStringArray(R.array.array_states_trial)));

    adapter = new ArrayAdapter<>(MapsActivity.this, android.R.layout.simple_list_item_1, arrayList);
    lv.setAdapter(adapter);
    lv.setVisibility(View.INVISIBLE);

最初,当mapactivity.java加载时,我不希望ListView立即显示。

    searchView.setOnSearchClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            lv.setVisibility(View.VISIBLE);
        }
    });

我希望ListView在单击搜索视图打开并弹出键盘时显示。

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

在上面的代码中,我希望ListView关闭,消失,看不见,但事实并非如此。

顺便说一句,我指的是CLOSING搜索视图随附的动作栏中的"后退"按钮。

搜索视图和键盘关闭时,我希望ListView也关闭,但由于某种原因,该代码尚未识别,ListView永远不会关闭。

如何关闭ListView?

您可以做的就是在您的活动中覆盖此方法:

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

希望这会有所帮助。

根据Android参考,如果您想覆盖清除文本字段的默认行为并将其删除,请尝试返回true,否则为false。否则。

请参阅此链接:https://developer.android.com/reference/android/widget/searchview.oncloselistener.html

  searchView.setOnCloseListener(new SearchView.OnCloseListener() {
    @Override
    public boolean onClose() {
           lv.setVisibility(View.INVISIBLE);
        return true;//Should work.
    }
});

相关内容

  • 没有找到相关文章

最新更新