当需要在 android 7或更高的版本使用 ActionBar,则可以通过继承ActionBarActivity来实现,
网上有一个开源项目来兼容老版本显示ActionBar的效果:ActionBarSherlock。
使用android.support.v7 来实现ActionBar感觉会更简单一些。
android.support.v7 有三个jar文件可供使用,对于ActionBar我们需要使用android-support-v7-appcompat.jar
路径:...\sdk\extras\android\support\v7\appcompat\libs
但是直接把这个jar 导入项目是不可以使用的,具体的步骤:
1. 把appcompat 工程导入eclipse [appcompat是一个 library project] ,路径:...\sdk\extras\android\support\v7\appcompat\
导入之后的项目:
2.导入appcompat工程的时候,记得要 Copy projects into workspace
3.创建你自己的工程,如myDemo,右键单击该工程,选择Properties
在弹出的对话框中,选择Android选项卡,然后点击Add按钮,添加appcompat工程。
4、然后 OK 就可以了,我们的工程就引用了 support V7库工程了。
在manifest文件中,为你使用了ActionBar的actitity添加theme属性,这个theme必须是 @style/Theme.AppCompat 或它的子类
如:
5.在res/menu目录下,修改Menu对应的xml文件:
- <menu xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:alpha="http://schemas.android.com/apk/res-auto" >
- <item
- android:id="@+id/action_settings"
- android:orderInCategory="100"
- android:icon="@drawable/ic_launcher"
- alpha:showAsAction="ifRoom|withText"
- android:title="@string/action_settings"/>
- </menu>
需要注意的是:
xmlns:alpha="http://schemas.android.com/apk/res-auto" 和 alpha:showAsAction="ifRoom|withText"
他们的 alpha 要一致哦,相当于自定义一个命名空间,名字可以随意,但要一致。
感觉这样的含义:如果直接使用android:showAsAction,但对于早期的版本来说android命名空间下不存在这个属性,就不能看到ActionBar的效果,而这个属性的定义存在于support V7 里面,所以可以兼容之前的版本。
6.继承 ActionBarActivity 处理ActionBar
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@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);
}
@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;
}
}
相关推荐
1. **全面的向后兼容性**:ActionBarSherlock通过使用自定义视图和主题,实现了对Android 2.x版本的兼容,使开发者可以使用最新的设计模式,无需担心设备的系统版本限制。 2. **统一的API**:库提供了与原生...
在描述中,“android-actionbar-for-2.x.x.7z”并没有提供额外的信息,但我们可以推断,这个压缩包可能包含了第三方库或自定义实现,使得开发者能够在Android 2.x设备上使用Action Bar功能。 标签“android-...
`ActionBarSherlock`框架是Android开发中的一个关键组件,由Jake Wharton开发,目的是为Android应用程序提供对Action Bar的支持,使开发者能够轻松地在Android 2.x(API级别低于11)版本上实现与更高API级别的相似...
`ActionBarSherlock` 是由Jake Wharton开发的一个开源项目,它通过自定义视图和主题,为Android 2.x版本提供了对ActionBar的支持。这个库不仅实现了ActionBar的基本功能,如选项菜单、导航抽屉、搜索视图等,还添加...
在使用tabs时,需通过ActionBar.setNavigationMode()切换到`NAVIGATION_MODE_TABS`,然后使用TabHost对象添加和管理tab。 **5. 菜单项的事件处理** 在菜单项上添加点击事件监听器,通常在onOptionsItemSelected...
然而,为了确保向后兼容,开发者需要解决在早期Android版本中无法使用`ActionBar`的问题。这就是`ActionBarSherlock`库的作用所在。`ActionBarSherlock`是由Jake Wharton开发的一个开源库,它为Android 2.1(API级别...
3. **使用AppCompatActivity**:如果你的项目基于AndroidX,可以继承`AppCompatActivity`,这将自动启用ActionBar并允许你使用`getSupportActionBar()`来访问和配置它。 在了解了基本用法后,我们还需要关注如何...
`ActionBarSherlock` 是一个开源库,由 Jake Wharton 开发,目的是为了在Android 2.x(API Level 8及以下)的老版本系统上实现`ActionBar`功能,使得开发者可以充分利用Android 4.0(API Level 14)引入的`ActionBar...
1. **Action Bar API兼容**:为Android 2.x版本提供与Android 3.0+相同的Action Bar接口和行为,包括Action Items、Overflow Menu、Split Action Bar等。 2. **主题支持**:提供一系列预定义的主题,允许开发者轻松...
2. **设置Navigation Mode**:在Activity的onCreate()方法中,你可以通过调用`getSupportActionBar()`(如果你使用的是AppCompatActivity)或`getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_...
在Android Studio中,你可以通过在布局XML文件中添加`<androidx.appcompat.widget.Toolbar>`组件,或者在Java代码中设置`setSupportActionBar()`方法来自定义ActionBar。此外,使用`ActionBarDrawerToggle`可以实现...
2. 调用`getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);` 3. 使用`addTab()`方法添加Tab,并关联Fragment。 四、ViewPager + PagerTabStrip/TabLayout Google推荐使用ViewPager结合...
在Android开发中,`Fragment`和`ActionBarSherlock`是两个...记住,随着Android版本的发展,`AppCompat`(现在是`AndroidX`的`AppCompatActivity`)已经成为了更好的选择,因为它提供了更多的现代特性和更好的兼容性。
ActionBarSherlock是一个开源库,由Jake Wharton开发,目的是为了兼容Android 2.x版本,使得开发者可以在所有Android设备上使用ActionBar功能。这个库扩展了Support Library,提供了一致的接口和行为,使得在旧版本...
ActionBarSherlock是一个非常重要的开源项目,专为Android开发者设计,以提供对Action Bar功能的广泛支持,即使在Android 2.x版本(API级别低于11)的设备上也能实现。这个项目的目的是使得开发者能够轻松地在各个...
4. 兼容性:对于不支持Action Bar的旧版本Android设备,可以使用第三方库如`ActionBarSherlock`来实现类似的功能。 5. 测试与优化:确保在不同的设备和屏幕尺寸上测试应用,以优化布局和交互。 总之,"android ...
`ActionBarSherlock`则是一个库项目,它为Android 2.x版本(API级别低于11)提供了与Android 4.x及更高版本相同的`ActionBar`功能,使得开发者可以在较低版本的系统上实现Material Design风格的界面。 在"slidemenu...