如何使用V7包中ActionBar

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用V7包中ActionBar相关的知识,希望对你有一定的参考价值。

  使用V7包中的ActionBar的方法步骤如下:
  1、导入Support V7的包.更新SDK 18以后,会发现在 \android\support\v7目录下有三个子文件夹,分别是:appcompatgridlayout\mediarouter,工作中比较常用的是appcompat把ndroid-support-v7-appcompat.jar这个工程Jar包导入到工程中。

  2、在manifest文件中,为你使用了ActionBar的actitity添加theme属性,这个theme必须是 @style/Theme.AppCompat ,@style/Theme.AppCompat.Light,或者是样式@style/Theme.AppCompat.Light.DarkActionBar,三种中的一种。

  3、在res/menu目录下,写一个xml文件。官方推荐每一个item项都要有icon和title图标,因为系统默认显示的是图标,而且当屏幕空间不够的时候,未显示的菜单就会隐藏到列表中,而列表中只能显示title字段的值。html代码代码如下:  
  android:id="@+id/action_search"

  android:icon="@drawable/left"

  android:title="search"/>

  android:id="@+id/action_compose"

  android:icon="@drawable/right"

  android:title="compose"/>

  4.实现Activity,让它继承ActionBarActivity.在onCreateOptionsMenu()方法中,获取到每一个MenuItem,之后为每一个MenuItem调用MenuItemCompat.setShowAsAction (MenuItem item, int actionEnum)方法,就可以将菜单项变为ActionBar中的子项了。
  actionEnum的值有以下几种:
  MenuItemCompat.SHOW_AS_ACTION_ALWAYS (始终显示)。
  MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW (隐藏显示)。
  MenuItemCompat.SHOW_AS_ACTION_IF_ROOM (屏幕有空间显示,没空间隐藏)。
  MenuItemCompat.SHOW_AS_ACTION_NEVER (永不显示)
  MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT (既显示图标又显示文字)
  最后 在方法中要 return true。
参考技术A 要是用V7包中ActionBar也很简单,但有一个需要主要的地方。有些人可能该开始仅仅是把android-support-v7-appcompat.jar导入项目中
具体使用 步骤 (针对于Eclipse):
Create a library project based on the support library code:
Make sure you have downloaded the Android Support Library using the SDK Manager .
Create a library project and ensure the required JAR files are included in the project's build path:
Select File > Import .
Select Existing Android Code Into Workspace and click Next .
Browse to the SDK installation directory and then to the Support Library folder. For example, if you are adding the appcompat project, browse to <sdk>/extras/android/support/v7/appcompat/ .
Click Finish to import the project. For the v7 appcompat project, you should now see a new project titled android-support-v7-appcompat .
In the new library project, expand the libs/ folder, right-click each .jar file and select Build Path > Add to Build Path . For example, when creating the the v7 appcompat project, add both the android-support-v4.jar andandroid-support-v7-appcompat.jar files to the build path.
Right-click the project and select Build Path > Configure Build Path .
In the Order and Export tab, check the .jar files you just added to the build path, so they are available to projects that depend on this library project. For example, the appcompat project requires you to export both the android-support-v4.jar and android-support-v7-appcompat.jar files.
Uncheck Android Dependencies .
Click OK to complete the changes.
You now have a library project for your selected Support Library that you can use with one or more application projects.
Add the library to your application project:
In the Project Explorer, right-click your project and select Properties .
In the Library pane, click Add .
Select the library project and click OK . For example, the appcompat project should be listed as android-support-v7-appcompat .
In the properties window, click OK .
Once your project is set up with the support library, here's how to add the action bar:
Create your activity by extending ActionBarActivity .
Use (or extend) one of the Theme.AppCompat themes for your activity. For example:
<activity android:theme="@style/Theme.AppCompat.Light" ... >

Now your activity includes the action bar when running on Android 2.1 (API level 7) or higher.
On API level 11 or higher
The action bar is included in all activities that use the Theme.Holo theme (or one of its descendants), which is the default theme when either the targetSdkVersion or minSdkVersion attribute is set to "11" or higher. If you don't want the action bar for an activity, set the activity theme to Theme.Holo.NoActionBar .
以上摘自Android官网。
示例代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.folyd.actionbartest"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:theme="@style/Theme.Base.AppCompat.Light"
android:name="com.folyd.actionbartest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

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

</manifest>

package com.folyd.actionbartest;

import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;

public class MainActivity extends ActionBarActivity
private ActionBar actionBar;

@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(true);


本回答被提问者和网友采纳
参考技术B 使用V7包中的ActionBar的方法步骤如下:
1、导入Support V7的包.更新SDK 18以后,会发现在 \android\support\v7目录下有三个子文件夹,分别是:appcompatgridlayout\mediarouter,工作中比较常用的是appcompat把ndroid-support-v7-appcompat.jar这个工程Jar包导入到工程中。

2、在manifest文件中,为你使用了ActionBar的actitity添加theme属性,这个theme必须是 @style/Theme.AppCompat ,@style/Theme.AppCompat.Light,或者是样式@style/Theme.AppCompat.Light.DarkActionBar,三种中的一种。

3、在res/menu目录下,写一个xml文件。官方推荐每一个item项都要有icon和title图标,因为系统默认显示的是图标,而且当屏幕空间不够的时候,未显示的菜单就会隐藏到列表中,而列表中只能显示title字段的值。html代码代码如下:
android:id="@+id/action_search"

android:icon="@drawable/left"

android:title="search"/>

android:id="@+id/action_compose"

android:icon="@drawable/right"

以上是关于如何使用V7包中ActionBar的主要内容,如果未能解决你的问题,请参考以下文章

如何使用android-support-V7包中ActionBar

v7 支持库 ActionBar 的 Android Proguard 配置

带有 appcompat 库 v7 的 ActionBar(ava.lang.IllegalStateException:您需要使用 Theme.AppCompat 主题)

如何更改工具栏导航和溢出菜单图标(appcompat v7)?

android studio android.support.v7.app.actionbaractivity is deprecated怎样处

使用Tab与新ToolBar(AppCompat v7-21)