android menu item属性,menuitem - Android 4.3菜单项showAsAction =“always”被忽略
menuitem - Android 4.3菜單項(xiàng)showAsAction =“always”被忽略
我使用從Android 4.3(API級(jí)別18)開始提供的新v7 appcompat庫。
無論showAsAction中為菜單項(xiàng)指定了什么,它都沒有顯示 - 它總是創(chuàng)建溢出菜單圖標(biāo),甚至在菜單下放置一個(gè)菜單項(xiàng)。
試圖將菜單添加到這樣的活動(dòng):
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_sizes, menu);
return true;
}
這是我的菜單xml:
android:title="@string/menu_add_item"
android:orderInCategory="10"
android:showAsAction="always"
android:icon="@android:drawable/ic_menu_add" />
它是新支持庫v7的錯(cuò)誤,還是代碼有問題?我以前多次使用與ActionBarSherlock類似的代碼。
13個(gè)解決方案
309 votes
您可能缺少必需的命名空間:
xmlns:[yourapp]="http://schemas.android.com/apk/res-auto">
android:title="@string/menu_add_item"
android:orderInCategory="10"
[yourapp]:showAsAction="always"
android:icon="@android:drawable/ic_menu_add" />
將ActionBarActivity替換為您的應(yīng)用名稱或您心所欲望的任何命名空間。
其他值得檢查的事情:
查看您的活動(dòng)類是否擴(kuò)展為ActionBarActivity
檢查問題是否仍然存在。
Android參考文檔:添加動(dòng)作按鈕。 以下是相關(guān)文字:
如果您的應(yīng)用程序使用支持庫以獲得與Android 2.1一樣低的版本的兼容性,那么android:namespace中不提供showAsAction屬性。 相反,此屬性由支持庫提供,您必須定義自己的XML命名空間并將該命名空間用作屬性前綴。 (自定義XML命名空間應(yīng)該基于您的應(yīng)用程序名稱,但它可以是您想要的任何名稱,并且只能在您聲明它的文件范圍內(nèi)訪問。)
Nikola Despotoski answered 2019-07-05T15:13:09Z
52 votes
弄清楚自己。 使用支持庫v7,showAsAction應(yīng)該在這樣的自定義命名空間下:
xmlns:balloonberry="http://schemas.android.com/apk/res-auto">
android:title="@string/menu_add_item"
android:orderInCategory="10"
balloonberry:showAsAction="always"
android:icon="@android:drawable/ic_menu_add" />
Mcingwe answered 2019-07-05T15:13:36Z
28 votes
還要確保在ActionBarActivity.onCreateOptionsMenu()方法中使用正確的inflater。
正確的解決方案:
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu_example, menu);
解決方案不正確:
MenuInflater menuInflater = new MenuInflater(this);
menuInflater.inflate(R.menu.menu_example, menu);
petrnohejl answered 2019-07-05T15:14:20Z
24 votes
對(duì)于碎片
具有自定義命名空間的菜單將阻止showAsAction顯示。
使用" android:" showAsAction的前綴將起作用,即使Android Studio會(huì)注意到您應(yīng)該使用自定義名稱空間。
android:title="Add Checkin"
android:orderInCategory="10"
android:showAsAction="always"
android:icon="@android:drawable/ic_menu_add"/>
這是使用Android SDK 22和支持v4片段,以防萬一。
Baker answered 2019-07-05T15:15:11Z
16 votes
有同樣的問題,但在Android 5.我有3個(gè)項(xiàng)目,但操作系統(tǒng)忽略了我的屬性"總是" 并只顯示了2個(gè)項(xiàng)目。 我的解決方案:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "onCreateOptionsMenu()");
inflater.inflate(R.menu.your_menu, menu);
for (int j = 0; j < menu.size(); j++) {
MenuItem item = menu.getItem(j);
Log.d(TAG, "set flag for " + item.getTitle());
item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
}
Lukas answered 2019-07-05T15:15:38Z
6 votes
還要確保您具有命名空間的正確路徑。 如果錯(cuò)誤,它不會(huì)給你一個(gè)錯(cuò)誤信息。
我有
xmlns:myapp="http://schemas.android.com/res-auto">
代替
xmlns:myapp="http://schemas.android.com/apk/res-auto">
我所知道的只是它不起作用。 不知道我是如何設(shè)法忘記路徑的/ apk部分,但它發(fā)生了。 沒有錯(cuò)誤消息,只是一個(gè)難以捉摸的錯(cuò)誤追蹤。
BeccaP answered 2019-07-05T15:16:20Z
6 votes
在我的情況下,我不得不從我的應(yīng)用程序的build.gradle編譯中刪除com.android.support:appcompat-v7:21.0.3&#39;。
注意:我的min sdk = 14,由android studio創(chuàng)建的項(xiàng)目插入了我不必要的依賴。
在這個(gè)替換之后你可以寫?機(jī)器人:showAsAction=&#34;總是&#34;
Anton Kizema answered 2019-07-05T15:17:02Z
4 votes
這可能不是你的情況,但我正在使用
new MenuInflater(this).inflate(R.menu.my_menu, menu);
改變它
getMenuInflater().inflate(R.menu.my_menu, menu);
解決了這個(gè)問題!
Bakhshi answered 2019-07-05T15:18:08Z
0 votes
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
android:id="@id/back"
android:icon="@drawable/back"
app:showAsAction="always"
android:title="@string/back"/>
android:id="@id/save"
android:icon="@drawable/le_top_btn_icon_add"
app:showAsAction="ifRoom"
android:title="@string/save"/>
不工作,? with supportLibraryVersion =&#39; 25.1.0&#39;compileSdkVersion = 25
看到&#34;警告&#34;
應(yīng)該使用帶有appcompat庫的app:showAsActionxmlns:app =&#34; [http://schemas.android.com/apk/res-auto"] less ...(Ctrl + F1)
使用appcompat庫時(shí),菜單資源應(yīng)引用app:namespace中的showAsAction,不是android:名稱空間。
同樣,當(dāng)不使用appcompat庫時(shí),你應(yīng)該使用android:showAsAction屬性。
我認(rèn)為警告可以被忽視。
Bill answered 2019-07-05T15:19:17Z
0 votes
像showAsAction和actionViewClass一樣添加這樣的自定義命名空間:
xmlns:app="http://schemas.android.com/apk/res-auto">
android:title="@string/search"
android:icon="@drawable/ic_search"
app:showAsAction="collapseActionView|ifRoom"
app:actionViewClass="android.widget.SearchView" />
Amirouche Zeggagh answered 2019-07-05T15:19:44Z
0 votes
最簡(jiǎn)單的方法是:
xmlns:myapp="http://schemas.android.com/apk/res-auto">
android:id="@+id/history"
android:icon="@drawable/icons8_history_white_medium"
android:title="History"
myapp:showAsAction="always" />
android:id="@+id/synchrnonize"
android:icon="@drawable/icons8_synchronize_white_medium"
android:title="Synchronize"
myapp:showAsAction="always" />
Pawe? answered 2019-07-05T15:20:07Z
0 votes
我通過替換解決了它
android:showAsAction="ifRoom"
同
app:showAsAction="ifRoom"
這就是menuitme xml的樣子,
android:title="Refresh"
android:icon="@drawable/refresh2"
app:showAsAction="ifRoom" />
Haris answered 2019-07-05T15:20:52Z
0 votes
最簡(jiǎn)單的方法是通過添加修改您的代碼
xmlns:app="http://schemas.android.com/apk/res-auto"
并更改此代碼
android:showAsAction="always"
至
app:showAsAction="always"
最后
xmlns:app="http://schemas.android.com/apk/res-auto">
android:title="@string/menu_add_item"
android:orderInCategory="10"
app:showAsAction="always"
android:icon="@android:drawable/ic_menu_add" />
Abdulhakim Zeinu answered 2019-07-05T15:21:38Z
總結(jié)
以上是生活随笔為你收集整理的android menu item属性,menuitem - Android 4.3菜单项showAsAction =“always”被忽略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为正式宣布鸿蒙,空欢喜一场?华为正式宣
- 下一篇: html首字母样式,html标签手册