好记性不如铅笔头

android, 编程

Android应用开发笔记:使用Android的ActionBar

低版本的Android默认是不支持ActionBar的,为了使android程序能够支持ActionBar,我们可以使用两种方法:

第一种使用第三方的库【 ActionBarSherLock 】,第二种是使用google在Android Support Library-ver18里提供的新版本的兼容库来实现。

这里备忘下第二种的实现方式,第一种的方式后续blog备忘。

github:

https://github.com/cstriker1407/android/HelloNewActionBar 】

1)下载更新需要的兼容包

访问Android SDK Manger,下载更新Android Support Library,如下图所示:

2)导入兼容库【 appcompat 】

使用Eclipse导入兼容库,这里兼容库的地址为:【 。。。\sdk\extras\android\support\v7\appcompat 】

导入时需要勾选Copy projects into workspace。如下图:

3)修改目标工程

在需要使用ActionBar的工程上点击右键->Properties->Android,将我们刚刚导入的appcompact作为库导入进去。如下图:

修改MainActivity,让其继承 ActionBarActivity。

MainActivity.java:

public class MainActivity extends ActionBarActivity
{
	 @Override
	    protected void onCreate(Bundle savedInstanceState) { 
	        super.onCreate(savedInstanceState); 
	        setContentView(R.layout.activity_main); 
	    } 
	     
	    @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; 
	    } 
	     
	    @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); 
	    } 	
}

 修改styles.xml文件,让工程使用ActionBar的主题。

styles.xml:

<resources>
    <style name="AppBaseTheme" parent="@style/Theme.AppCompat"></style>
    <style name="AppTheme" parent="AppBaseTheme"></style>
</resources>

这样就可以使用了。

备注:

1)参考:

http://www.bdqn.cn/news/201308/10625.shtml 】

http://blog.csdn.net/hkg1pek/article/details/9473265 】 

http://stackoverflow.com/questions/17870881/cant-find-theme-appcompat-light-for-new-android-actionbar-support 】

2)ActionBar作者没有实际使用过,后续需要学习一些该设计思想的优秀实现。

Leave a Reply

19 + 9 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据