在文章【 Android应用开发笔记:使用Android的ActionBar 】中我们被忘了使用Android系统的兼容库来实现ActionBar,这里我们使用第二种方式,开源库:【 ActionBarSherlock 】
github:
【 https://github.com/cstriker1407/android/tree/master/HelloActionbarSherlock 】
CONTENTS
1)开源库的下载和Demo的使用
访问官网:【 http://actionbarsherlock.com/download.html 】下载最新版本的库,然后将其解压缩。
导入需要的工程,这里我们只导入两个工程,如下图所示,这里可以修改下demos的Project的名称,便于识别。
修改目标工程,在actionbarsherlockSampleList上点击右键->Properties->Android,导入库,如下图所示:
clean两个工程,刷新下两个工程,保证两个工程都没有报错后,可以将actionbarsherlockSampleList Run到手机上。
2)我们自己工程的使用方式
首先和上一步一样,将actionbarsherlock作为库引用到我们自己的工程中,如果工程报android-support-v4.jar dismatch错误,可以进入本地工程文件夹,将本地工程里面的libs/下的android-support-v4.jar删除,这是最快捷的方法。
然后进入styles.xml文件,将parent属性改为:【 @style/Theme.Sherlock.Light 】
<resources> <style name="AppBaseTheme" parent="@style/Theme.Sherlock.Light"></style> <style name="AppTheme" parent="AppBaseTheme"></style> </resources>
修改MainActivity,使其继承SherlockActivity:
public class MainActivity extends SherlockActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { getSupportMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.delete: { Toast.makeText(this, "delete", Toast.LENGTH_SHORT).show(); break; } case R.id.add: { Toast.makeText(this, "add", Toast.LENGTH_SHORT).show(); break; } // case R.id.homeAsUp: // { // Toast.makeText(this, "homeAsUp", Toast.LENGTH_SHORT).show(); // break; // } default: break; } return super.onOptionsItemSelected(item); } }
Menu文件夹的main.xml改为:
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/add" android:icon="@android:drawable/ic_menu_add" android:showAsAction="ifRoom" android:title="add" android:titleCondensed="add2"> </item> <item android:id="@+id/delete" android:icon="@android:drawable/ic_menu_delete" android:showAsAction="ifRoom" android:title="delete" android:titleCondensed="delete2"> </item> </menu>
就可以了
备注:
1)ActionBarSherlock作者没有实际使用过,后续需要仔细的学习下demo。
2)参考【 http://my.oschina.net/summerpxy/blog/174675 】【 http://my.oschina.net/chenzz/blog/119586 】
【 http://www.chenwg.com/android/actionbarsherlock%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B.html 】
3)关于Actionbarsherlock的demo,官网上有一些说明,大家可以参考一下。
发表评论