为啥app没有menu键?

来源:互联网 发布:数控电脑编程软件 编辑:程序博客网 时间:2024/05/02 00:21

作为半路出家做android app的人,对android很多东西不是很熟悉,造成很多苦恼,


测试机是4.2.2的系统,

之前的app没有menu键,也没有实体键,发现是因为

 <activity
            android:name="com.nufront.mediacenter.LauncherActivity"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar"
            android:label="@string/app_name" > 

没有title bar 导致的。

=====

参考http://www.2cto.com/kf/201206/136813.html

添加ActionBar
     不需要导入ActionBar,因为在android3.0或者以上版本中,ActionBar已经默认的包含在Activity中
     在Android3.0的默认主题“holographic”中,已经创造了ActionBar
     当android:minSdkVersion 或者 android:targetSdkVersion属性被设置成11或者更高时,应用会被认为是Android3.0版本(默认含有ActionBar)
去除ActionBar 
     我们可以通过把主题设置为Theme.Holo.NoActionBar为一个Activity去除掉ActionBar。                                                                                     

   <activity android:theme="@android:style/Theme.Holo.NoActionBar">

======================

现在又发现一个app没有menu键,但是是有title的,

找了好久解决不了问题,很奇怪为啥几乎一样xml配置的其他app 在action bar上就有menu呢?

看到http://blog.csdn.net/penglijiang/article/details/7844514 说,

  1. <uses-sdk  
  2.     android:minSdkVersion="8"  
  3.     android:targetSdkVersion="15" 

android:targetSdkVersion改为10,可以暂时解决这个问题,就是在虚拟按键旁边有这个menu键了。。。

但是,

看到 http://www.whatsapp.com/faq/zh_cn/android/21228643 说,4.0和4.2的位置不一样的,

看这个 http://www.2cto.com/kf/201206/136813.html 说,应该上头的那个地方就叫做 action bar,

其他app也是跟我一样的target version,人家就好好的。

怎么才能在上面的操作栏 显示那三个点的menu键呢?


===========后来发现api > 10 就不好用了 参考 http://blog.csdn.net/jiaoyang623/article/details/10526073

在Activity的onCreate中设置flag

[java] view plaincopy
  1. getWindow().setFlags(WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY, WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY);   
或者
[java] view plaincopy
  1. getWindow().setFlags(0x080000000x08000000);  
这么改的话,可以控制某个Activity有菜单,某个没有。

我用的第二个方法,menu键ok!


=====

参考http://blog.csdn.net/klpchan/article/details/9749569


1】应用图标、2】AcationBar菜单项 3】AB溢出菜单项,下面还可以看到Tab标签,这些都可以在ActionBar在显示出来。ActionBar是在API11以后才引入的,如果想在早期版本中使用该组件,可以导入android.suppor.v7.app.actionbar。参考http://developer.android.com/tools/support-library/setup.html设置库。对于targetSdkVersion在11或者以上的应用来说,默认主题"Theme.Holo"使用了ActionBar,如果不想使用该组件,可以设置主题为"Theme.Holo.NoActionBar"。


可知,api11之上,默认主题都是有menu键的



于是, 指定主题:


    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:screenOrientation="landscape"
        android:theme="@android:style/Theme.Holo"        

        >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >


            <intent-filter>
                <action android:name="android.intent.action.MAIN" />


                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

logo title 和 menu 都能看到了。

0 0