Chỉ cần hoàn thành những gì @Kurtis Nusbaum với một ví dụ thực tế.
CẬP NHẬT: như @ rudy-s đã nói, với thư viện hỗ trợ Android mới nhất (api 18), tôi thấy họ đã có hỗ trợ tích hợp cho thanh hành động (được gọi là lớp ActionBarCompat).
Tôi đã xây dựng hai ứng dụng đơn giản để hiển thị sự khác biệt trực quan giữa Tương thích ActionBarSherlock và ActionBar. Xem hình ảnh so sánh:
Bây giờ xuất hiện khi nhấn nút menu:
Như bạn có thể thấy, những hình ảnh chỉ thực thi những gì đã nói. Tính tương thích của Action Bar chỉ cung cấp cho bạn thanh hành động nếu thiết bị bạn đang chạy là API cấp 3.0 trở lên. Trong khi Sherlock thì chung chung hơn.
Dưới đây bạn có thể thấy các nguồn ứng dụng.
Tệp xml menu giống nhau:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_1"
android:orderInCategory="100"
android:showAsAction="always"
android:title="@string/action1"/>
<item
android:id="@+id/action_2"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action2"/>
<item
android:id="@+id/action_3"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="@string/action3"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
</menu>
Hoạt động tương thích:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Hoạt động của Sherlock:
public class MainActivity extends SherlockActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
getSupportMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
}
Một cấu hình bổ sung là cần thiết trên ứng dụng sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
CẬP NHẬT: như @ rudy-s đã nói, với thư viện hỗ trợ Android mới nhất (api 18), tôi thấy họ đã có hỗ trợ tích hợp cho thanh hành động (được gọi là lớp ActionBarCompat).