Android 开源框架ActionBarSherlock初探

1:我的开发环境是Ubuntu12.04下:adt-bundle-linux-x86-20130729。

ActionBarSherlock下载地址:http://actionbarsherlock.com/  我下载的是zip版:JakeWharton-ActionBarSherlock-5a15d92,解压之后:

2:actionbarsherlock没有提供类似jar包的方式,所以我们要先新建一个sherlock工程,例如:

点击Next:这里要选中第三项  Mark this project as a library

然后一路Next最后Finish。

3:进入actionbarsherlock文件夹:

把libs,res,src,AndroidManifest.xml四个文件覆盖到我们刚才新建的sherlock工程里,我们的sherlock工程目录如下:

此时回到我们的工程界面,刷新一下工程,看一下有没有错误:如没有报错就OK了。

4:此时我们新建一个工程来测试一下sherlock是否可以用,此时建立的工程和我们平时一样。

例如:sherlocktest:然后右键->Properties->Android->右边勾选 is Library->Add->选中sherlock->OK

最后  Apply之后在控制台会提示错误:说是android-support-v4.jar的问题,我就把sherlocktest工程中的libs/android-suppoer-v4.jar覆盖到了sherlock中的libs/android-suppoert-v4.jar,之后又重新加载了一边这次没有报错。

(1)修改AndroidManifest.xml如下:对activity中加入theme模板:

android:theme="@style/Theme.Sherlock.Light"
<activity
            android:name="com.example.sherlocktest.MainActivity"
            android:label="@string/app_name" 
            android:theme="@style/Theme.Sherlock.Light">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

(2)修改menu/main.xml文件如下:

 <item
        android:id="@+id/add"
        android:icon="@android:drawable/ic_menu_add"
        android:showAsAction="ifRoom"
        android:title="add"
        android:titleCondensed="add">
    </item>
    <item
        android:id="@+id/delete"
        android:icon="@android:drawable/ic_menu_delete"
        android:showAsAction="ifRoom"
        android:title="delete">
    </item>

(3)修改MainActivity 要继承SherlockActivity,也要导入sherlock的Menu

public class MainActivity extends SherlockActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

运行项目效果如下:

说明:在覆盖文件的时候不要覆盖libs就不会报之前的错误了。 

原文地址:https://www.cnblogs.com/yshyee/p/3375363.html