src091
src091

Reputation: 2847

Menu Item showAsAction="always" has no effect

I use the following definition for an action bar:

<style name="YesBar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <!-- task bar styles go here -->
</style>

And here's my menu items definitions:

<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:compat="http://schemas.android.com/apk/res-auto">

    <item
        android:title="@string/action_request_payment"
        android:id="@+id/actionRequestPayment"
        compat:showAsAction="never"/>

    <item
        android:title="@string/action_send_money"
        android:id="@+id/actionSendMoney"
        compat:showAsAction="never"/>

    <item
        android:title="@string/action_tx_history"
        android:icon="@drawable/ic_action_tx_history"
        android:id="@+id/actionTxHistory"
        compat:showAsAction="always"/>

    <item
        android:title="@string/action_settings"
        android:id="@+id/actionSettings"
        compat:showAsAction="never"/>

</menu>

My issue is that compat:showAsAction="always" has no effect: the icon is never shown in action bar. How can I fix this?

UPD

My activity code (I use Scala):

class WalletActivity extends ActionBarActivity {
  lazy val sack = findViewById(R.id.sack).asInstanceOf[SackView]

  override def onCreate(savedInstanceState: Bundle) {
    setContentView(R.layout.activity_wallet)
    super.onCreate(savedInstanceState)
  }

  override def onCreateOptionsMenu(menu: Menu) = {
    getMenuInflater.inflate(R.menu.ops, menu)
    true
  }
}

Upvotes: 0

Views: 1160

Answers (2)

Konrad Krakowiak
Konrad Krakowiak

Reputation: 12365

To resolve your issue you have to extends ActionBarActivity. But you have to change your style

<style name="YesBar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <!-- task bar styles go here -->
</style>

With this:

<style name="YesBar" parent="Theme.AppCompat">
    <!-- task bar styles go here -->
</style>

And change the order of these methods

setContentView(R.layout.activity_wallet)
super.onCreate(savedInstanceState)

to

super.onCreate(savedInstanceState)
setContentView(R.layout.activity_wallet)

Upvotes: 1

Maksim
Maksim

Reputation: 264

Try using android:showAsAction instead of compat:showAsAction. Or might be this Android 4.3 menu item showAsAction="always" ignored.

Upvotes: 0

Related Questions