เพิ่งทำสิ่งที่ @Kurtis Nusbaum ด้วยตัวอย่างที่เป็นจริง
อัปเดต: ตามที่ @ rudy-s กล่าวว่าด้วยไลบรารีสนับสนุน android ล่าสุด (api 18) ฉันเห็นว่าพวกเขามีการสนับสนุนสำหรับ actionbar ในตัวอยู่แล้ว (เรียกว่าคลาส ActionBarCompat)
ฉันสร้างแอพพลิเคชั่นง่าย ๆ สองตัวเพื่อแสดงความแตกต่างทางภาพระหว่าง ActionBarSherlock และความเข้ากันได้ของ ActionBar ดูภาพเปรียบเทียบ:
ตอนนี้ลักษณะที่ปรากฏเมื่อกดปุ่มเมนู:
อย่างที่คุณเห็นภาพเหล่านั้นบังคับใช้สิ่งที่พูด ความเข้ากันได้ของแถบการกระทำจะให้แถบการกระทำแก่คุณเฉพาะเมื่ออุปกรณ์ที่คุณใช้อยู่คือระดับ API 3.0 ขึ้นไป ในขณะที่เชอร์ล็อคเป็นเรื่องทั่วไปมากขึ้น
ด้านล่างนี้คุณสามารถดูแหล่งที่มาของแอปพลิเคชัน
ไฟล์ xml ของเมนูเหมือนกัน:
<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>
กิจกรรมของความเข้ากันได้:
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;
}
}
กิจกรรมของ 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);
}
}
จำเป็นต้องมีการกำหนดค่าเพิ่มเติมในแอป sherlock:
<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
อัปเดต: ตามที่ @ rudy-s กล่าวว่าด้วยไลบรารีสนับสนุน android ล่าสุด (api 18) ฉันเห็นว่าพวกเขามีการสนับสนุนสำหรับ actionbar ในตัวอยู่แล้ว (เรียกว่าคลาส ActionBarCompat)