低版本的Android默认是不支持ActionBar的,为了使android程序能够支持ActionBar,我们可以使用两种方法:
第一种使用第三方的库【 ActionBarSherLock 】,第二种是使用google在Android Support Library-ver18里提供的新版本的兼容库来实现。
这里备忘下第二种的实现方式,第一种的方式后续blog备忘。
github:
【 https://github.com/cstriker1407/android/HelloNewActionBar 】
CONTENTS
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 】
2)ActionBar作者没有实际使用过,后续需要学习一些该设计思想的优秀实现。
发表评论