`
zxs19861202
  • 浏览: 908508 次
  • 性别: Icon_minigender_1
  • 来自: 湖北—》上海
社区版块
存档分类
最新评论

不使用ActionBarSherlock 兼容2.x的actionbar

 
阅读更多

当需要在 android 7或更高的版本使用 ActionBar,则可以通过继承ActionBarActivity来实现,

网上有一个开源项目来兼容老版本显示ActionBar的效果:ActionBarSherlock。

使用android.support.v7 来实现ActionBar感觉会更简单一些。

 

android.support.v7 有三个jar文件可供使用,对于ActionBar我们需要使用android-support-v7-appcompat.jar

路径:...\sdk\extras\android\support\v7\appcompat\libs   

 

但是直接把这个jar  导入项目是不可以使用的,具体的步骤:

1. 把appcompat 工程导入eclipse  [appcompat是一个 library project] ,路径:...\sdk\extras\android\support\v7\appcompat\

导入之后的项目:



 2.导入appcompat工程的时候,记得要  Copy projects into workspace

3.创建你自己的工程,如myDemo,右键单击该工程,选择Properties

在弹出的对话框中,选择Android选项卡,然后点击Add按钮,添加appcompat工程。



 

4、然后 OK 就可以了,我们的工程就引用了 support V7库工程了。

在manifest文件中,为你使用了ActionBar的actitity添加theme属性,这个theme必须是 @style/Theme.AppCompat 或它的子类

如:




 

5.在res/menu目录下,修改Menu对应的xml文件:

[html] view plaincopy
 
  1. <menu xmlns:android="http://schemas.android.com/apk/res/android"   
  2.     xmlns:alpha="http://schemas.android.com/apk/res-auto" >  
  3.   
  4.     <item  
  5.         android:id="@+id/action_settings"  
  6.         android:orderInCategory="100"  
  7.         android:icon="@drawable/ic_launcher"  
  8.         alpha:showAsAction="ifRoom|withText"  
  9.         android:title="@string/action_settings"/>  
  10.   
  11. </menu>  

 

需要注意的是:

 

xmlns:alpha="http://schemas.android.com/apk/res-auto"  和  alpha:showAsAction="ifRoom|withText"

他们的 alpha 要一致哦,相当于自定义一个命名空间,名字可以随意,但要一致。

 

感觉这样的含义:如果直接使用android:showAsAction,但对于早期的版本来说android命名空间下不存在这个属性,就不能看到ActionBar的效果,而这个属性的定义存在于support V7 里面,所以可以兼容之前的版本。

 

6.继承 ActionBarActivity  处理ActionBar

public class MainActivity extends ActionBarActivity {

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

 

     

    @Override

    public boolean onOptionsItemSelected(MenuItem menu) { 

        if (menu.getTitle() == "No.1"){ 

            Toast.makeText(getApplicationContext(), "You clicked first button.", Toast.LENGTH_SHORT).show(); 

        } 

        if (menu.getTitle() == "No.2"){ 

            Toast.makeText(getApplicationContext(), "You clicked second button.", Toast.LENGTH_SHORT).show(); 

        } 

        if (menu.getTitle() == "No.3"){ 

            Toast.makeText(getApplicationContext(), "You clicked third button.", Toast.LENGTH_SHORT).show(); 

        } 

        return super.onOptionsItemSelected(menu); 

    } 

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

MenuItemCompat.setShowAsAction( 

                menu 

                .add("No.1") 

                .setIcon(android.R.drawable.ic_menu_rotate),  

                MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 

        MenuItemCompat.setShowAsAction( 

                menu 

                .add("No.2") 

                .setIcon(android.R.drawable.ic_menu_compass),  

                MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 

        MenuItemCompat.setShowAsAction( 

                menu 

                .add("No.3") 

                .setIcon(android.R.drawable.ic_menu_more),  

                MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 

        return true; 

 

}

}



 

 

  • 大小: 74.3 KB
  • 大小: 304.9 KB
  • 大小: 42.4 KB
  • 大小: 25.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics