我正在尝试将EditText添加到我的操作栏。但是当我尝试使用getActionView()搜索项时,它总是返回null。
我花了大约5个小时在网上搜索解决方案,但我发现的所有内容都与SearchView无关,不适用于我的情况。
似乎我需要使用MenuItemCompat.getActionView(),因为我的minSDK是8,但它总是返回null。
另一个解决方案建议更改proguard规则,但这两者都没有帮助。
请帮忙。
menu_email.xml
<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"
tools:context="il.co.talkie.q.SettingsEmailActivity">
<item
android:id="@+id/action_save"
android:title="@string/save_action"
android:orderInCategory="100"
app:showAsAction="always"
tools:ignore="AppCompatResource"/>
<item
android:id="@+id/action_err_email"
android:title="@string/email_err_prompt"
android:visible="true"
android:orderInCategory="1"
app:showAsAction="always"
tools:ignore="AppCompatResource"
android:actionLayout="@layout/menu_header"
>
</item>
</menu>
menu_header.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/simple_blue">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:text="@string/service_providers_menu_header"
android:layout_weight="1"
android:editable="false"
android:inputType="none" />
</LinearLayout>
以及活动中的相关代码
Java代码
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_email, menu);
MenuItem email_err_menu = menu.findItem(R.id.action_err_email);
View v = (View) MenuItemCompat.getActionView(email_err_menu);
...
return true;
}
上面的对象v始终为空
答案 0 :(得分:3)
如果您使用支持库,请尝试app:actionLayout="@layout/menu_header"
而不是android:actionLayout="@layout/menu_header"
。