[英]Adding Action to the Action Bar Android
我試圖將搜索圖標添加到操作欄,並且它顯示在Android Studio的xml預覽中,但是當我運行我的應用程序時,它顯示在溢出菜單中,而不是操作欄上的圖標。 我究竟做錯了什么?
menu_launch.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=".LaunchActivity">
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
我嘗試將app:showAsAction
設置為"always"
但是沒有用。
在我的LaunchActivity.java中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_launch, menu);
return super.onCreateOptionsMenu(menu);
}
我的LaunchActivity.java擴展了Activity,而不是ActionBarActivity,我不知道這是否與它有關。
謝謝您的幫助,這是我的第一個應用程序。
對於ActionBarActivity
,您將使用app:showAsAction
,因為它將是AppCompat屬性。
對於Activity
,您應該使用android:showAsAction
因為這是它讀取的唯一屬性。
如果希望它始終顯示為圖標,請將屬性設置為"always"
。
讓您的活動擴展ActionBarActivity。 您擁有的menu_launch.xml將起作用。
嘗試更改您的主題。 這也取決於您的主題。 在styles.xml文件中
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
讓我知道它是否有效,因為其他所有內容似乎都在您的代碼中起作用。 您還需要將此引用放入manifest.xml文件。 您的主要活動
<application
android:theme="@style/AppTheme" />
根據文檔。
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:showAsAction="never" />
</menu>
這聲明當操作欄中有可用空間時,“搜索”操作應顯示為操作按鈕,但“設置”操作應始終出現在溢出中。 ( 默認情況下,所有動作都會出現在溢出中,但是最好明確聲明每個動作的設計意圖。 )
因此,嘗試旋轉屏幕,只要有足夠的空間容納圖標即可,您的應用就會顯示該屏幕。您應該設置showAsAction =“ always”。
Why you are sitting app:showAsAction="never" in action_settings try this
<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=".LaunchActivity">
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="ifRoom"/>
</menu>
要么
<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=".LaunchActivity">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"/>
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
app:showAsAction="ifRoom"/>
</menu>
android:showAsAction="never"
android:showAsAction="ifRoom"
這些只是將其更改為
android:showAsAction="always"
嘗試將app:showAsAction
更改為android:showAsAction
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.