菜单项showAsAction ="始终"没有效果

时间:2015-02-22 11:21:07

标签: android android-actionbar

我对操作栏使用以下定义:

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

这是我的菜单项定义:

<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>

我的问题是compat:showAsAction="always"无效:图标永远不会显示在操作栏中。我怎样才能解决这个问题?

UPD

我的活动代码(我使用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
  }
}

2 个答案:

答案 0 :(得分:1)

要解决您的问题,您必须扩展ActionBarActivity。但你必须改变你的风格

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

有了这个:

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

并改变这些方法的顺序

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

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

答案 1 :(得分:0)

尝试使用android:showAsAction而不是compat:showAsAction。 或者可能是Android 4.3 menu item showAsAction="always" ignored