app:showAsAction总是显示"从不"属性

时间:2016-12-20 23:34:54

标签: android android-layout android-actionbar menuitem android-menu

我只是一名初学者,因此我尝试专门制作Android应用以了解menu.xmlActionBar。所以我尝试添加MenuItems,这是我的menu.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:PizzaApp="http://schemas.android.com/apk/res-auto"
    tools:context=".MainActivity">

    <item android:id="@+id/action_order_pizza"
          android:icon="@drawable/order_pizza"
          android:title="@string/order_pizza"
          android:orderInCategory="1"
          PizzaApp:showAsAction="ifRoom"/>

    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:orderInCategory="2"
          PizzaApp:showAsAction="never"/>

</menu>

由于我希望自己的应用使用Material design,我实际上并没有extend AppCompatActivity,但我使用了support.v7.app 依赖,只是为了使应用程序兼容。既然support.v7.app库没有包含showAsAction函数,我在menu.xml中使用了AppName而不是android。但问题是,在action_setting项旁边,action_order_pizza也出现在溢出而不是 ActionBar 中。请帮忙!这是MainActivity代码:

import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }

提前致谢!

  

注意:如果我使用android代替PizzaApp,Android Studio会显示错误,但是当您运行该应用时,它仍能正常运行!

1 个答案:

答案 0 :(得分:1)

如果您想使用AppCompat的任何部分,例如app:showAsAction,您应该扩展AppCompatActivity并使用Theme.AppCompatTheme.AppCompat extends Theme.Material并允许您在所有API 9+设备上使用材料设计。