2

ActionBar使用的若干细节整理

 2 years ago
source link: http://www.androidchina.net/1230.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

关于ActionBar的使用,很多大神早就已经写了非常好的文章进行了介绍,所以ActionBar的基本使用本文再赘述,今天我们主要讨论一下ActionBar在使用中的一些细节问题。

1.使用ActionBar的手机版本限制是什么?

系统原生的ActionBar是在Android3.0(API 11)才引入的,主要用来提供一个统一风格的导航栏,来代替Activity的标题栏。对于手机来说,版本只存在2.x时代和4.x时代,这是因为3.x系统是为了平板而产生的,在手机上并不存在3.x版本的系统。所以,如果使用系统原生的ActionBar,那么软件的最低版本支持应该是4.0(API 14)。如果我们想最低支持2.2系统,那么原生的ActionBar就不能使用了,不过,我们可以使用第三方开源项目ActionBarSherlock,实现2.x版本的兼容。这个项目的使用暂时先不介绍了,资料很多,下面是项目的Github地址:https://github.com/JakeWharton/ActionBarSherlock

2.默认的ActionBar上面有哪些内容?

当我们创建一个默认的4.0以上版本的APP的时候,会自带一个默认效果的ActionBar,ActionBar从功能上大体可以分为以下几个部分

3.Home区域显示的是什么内容呢?

Home的位置默认是用来放置APP的icon的,但是这个位置,也可以用来放一个logo的图片。icon与logo的区别在于,icon指的是APP在手机桌面的图标,而logo则没有限制,任何图片都可以,但是为了增强用户对品牌的认知度,logo一般使用品牌的图片。需要注意的是,icon和logo是不能同时存在的,如果有logo,icon会被覆盖。

4.如何指定显示icon还是logo?

我们可以使用下面的方式,来制定某一个Activity的icon和logo属性

<activity
android:name=".MainActivity"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:logo="@drawable/qr" >
</activity>

设置好这些属性之后,如果不做其他的额外设置,APP默认会显示logo的图片,如下图所示

如果我们想显示icon怎么办呢?

使用下面的代码即可

actionBar = getActionBar();
actionBar.setDisplayUseLogoEnabled(false);

如果这两个图标我们都不想要呢?通过下面的代码,就可以把Home的图标都去掉了。

actionBar.setDisplayShowHomeEnabled(false);

5.如何指定显示的标题文字?

标题文字区域用来指示当前的界面,分为主标题和副标题,我们可以通过下面的方式来设置显示的标题

<activity
android:name=".MainActivity"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:logo="@drawable/qr" >
</activity>

当然,我们也可以在代码中控制显示的标题和副标题,就像下面这样:

actionBar.setTitle("我是主标题");
actionBar.setSubtitle("我是副标题");

下面是实现的效果

我们也可以通过下面的代码隐藏标题

actionBar.setDisplayShowTitleEnabled(false);

6.如果在Home区域,加上向上的导航图标?

如果Home区域的点击效果是回到上一级,那么仅仅使用icon就不太合适了,我们可以通过下面的代码,将Home区域加上向上的导航图标,从而使得导航更加的明确

actionBar.setDisplayHomeAsUpEnabled(true);

效果图如下:

加上向上的导航图标之后,我们就可以接受到这个小图标的点击事件,点击事件就在onOptionsItemSelected里面接受,代码如下

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
if (id == android.R.id.home) {
Toast.makeText(this"点击", Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}

因为这个位置是系统设定的,因此id就是固定的android.R.id.home,我们在onOptionsItemSelected里面就可以接收到点击事件,然后进行对应的逻辑处理。

另外的一个思路是使用前面介绍的logo,把logo设置成返回的图标,也可以实现类似的效果。

7.如何给ActionBara设置自定义的背景或者是颜色

ActionBar自带的颜色只有黑色和白色,如果我们想改变ActionBar的颜色,我们可以使用图片或者是纯颜色值。

如果使用自定义图片,我们可以向下面这样做

Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
actionBar.setBackgroundDrawable(d);

如果使用自定义的颜色,我们可以象下面这样

actionBar.setBackgroundDrawable(new ColorDrawable(Color.BLUE));

效果如下所示

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

转载请注明:Android开发中文站 » ActionBar使用的若干细节整理


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK