gpt4 book ai didi

android - 带有 "app:showAsAction="ifRoom|collapseActionView""的 SearchView 是否有错误?

转载 作者:行者123 更新时间:2023-11-29 02:19:26 25 4
gpt4 key购买 nike

  1. MenuItem之后已扩展为 SearchView , 溢出菜单显示另一个搜索项。我对它的预期行为是它不会在 SearchView 时显示另一个搜索项。展开。
  2. MenuItem之后折叠,搜索项不再存在。我对它的预期行为是它会折叠回一个图标。

第一个状态: first state
第二状态: second state
第三状态: third state
第四种状态: fourth state

我目前的解决方案是从 app:showAsAction="ifRoom|collapseActionView" 改成至 app:showAsAction="always|collapseActionView"一切正常。

布局\main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
tools:context=".MainActivity">

<androidx.appcompat.widget.Toolbar android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:title="Main" />
</LinearLayout>

菜单\main.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/search"
android:icon="@drawable/ic_search_white"
android:title="Search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView" />

<item android:id="@+id/enter_delete_mode"
android:icon="@drawable/ic_delete_white"
android:title="Enter delete mode"
app:showAsAction="never" />
</menu>

主要 Activity .java:

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MenuItem.OnActionExpandListener;
import android.widget.SearchView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

public class MainActivity extends AppCompatActivity implements OnActionExpandListener {
private SearchView searchView;

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

Toolbar t = findViewById(R.id.toolbar);
setSupportActionBar(t);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.main, menu);

MenuItem searchItem = menu.findItem(R.id.search);
searchView = (SearchView) searchItem.getActionView();
searchView.setIconifiedByDefault(false);
searchView.setQueryHint("Search...");
searchItem.setOnActionExpandListener(this);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.enter_delete_mode)
Toast.makeText(this, "Pressed!", Toast.LENGTH_SHORT).show();
return super.onOptionsItemSelected(item);
}

@Override
public boolean onMenuItemActionExpand(MenuItem item) {
searchView.setIconified(false);
return true;
}

@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
searchView.setIconified(true);
searchView.clearFocus();
return true;
}
}

最佳答案

这对我来说似乎是一个错误,虽然我找不到任何文章谈论它。

尽管如此,我还是找到了解决方法,希望这对某些人有所帮助。

要防止 searchView 项在展开时在溢出菜单下列出,请将其 ShowAsAction 属性更改为 SHOW_AS_ACTION_ALWAYS | SHOW_AS_ACTION_COLLAPSE_ACTION_VIEWsearchView 状态 展开时的运行时。

@Override
public boolean onMenuItemActionExpand(MenuItem item) {
//Force searchItem not to be listed under overflow menu.
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS |
MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
return true;
}

要防止 searchView 项在折叠时消失,只需为要重绘的菜单调用 invalidateOptionsMenu

@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
//Call menu to be redrawn
invalidateOptionsMenu();
return true;
}

关于android - 带有 "app:showAsAction="ifRoom|collapseActionView""的 SearchView 是否有错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57328057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com