android如何在底部显示四个按钮,[Android系列—] 四. 添加操作栏(Action Bar)

[Android系列—] 4. 添加操作栏(Action Bar)

前言

操作栏是最重要的设计元素之一,使用它来实现你的应用程序活动。通过提供多种用户界面功能, 使应用程序快速和其他的Andorid应用程序一致, 以便被用户熟悉和接受。 主要功能包括:

1. 标识你的应用程序,指示在应用程序的用户的位置。

2. 能很方便的操作重要的功能(像搜索功能)

3. 导航和视图切换功能(使用制表符或下拉列表)

类似的效果如下:

131326481.png

设置操作栏

在基本的使用状况是, 操作栏在左边显示活动的标题和应用的图标。

类似:

131326482.png

设置一个基本的操作栏需要你使用的应用活动主题支持操作栏, 这和具体的Android 的版本有关。

1.  Android 3.0 及以上版本支持

从 Android 3.0 (API Level 11)开始,使用 Theme.Holo (或是它的子类), 操作栏就包含在所有的活动中了; 当targetSdkVersion或者minSdkVersion这个值设置成 "11"或者更大的话, 默认就是使用这种主题(Theme)了.

具体的设置类似:

...

所以如果定义一个自己的主题, 需要使用操作栏的话, 就可以从 Theme.Holo 这个主题继承就可以了。

2.  Android 2.1 及以上版本的处理

如果使用的Android 版本低于 3.0的话, 如何处理呢?

这个时候就要在应用中导入安卓的支持库了。

这就是在前面介绍的为什么在建立Android项目的时候会多出一个  appcompat_v7 的原因了。 这就是需要导入的库。

具体的步骤有

1. 更新 activity 使之继承 ActionBarActivity

public class MainActivity extends ActionBarActivity { ... }

2. 在清单文件中, 更新 或某个元素, 使之使用 Theme.AppCompat 主题, 类似

最后, 设置应用的API 层级

...

前面介绍的例子, 默认创建的应用,效果就是如此:

[Android系列—] 2. Android 项目目录结构与用户界面的创建

添加操作按钮

可以在操作栏中添加图标, 文字这样的操作按钮,来执行和当前环境相关的一些重要的动作。

当按钮无法全部显示或是不够重要时,也可以进行隐藏。

131326481.png

1. 在XML 中配置操作(Actions)

所有的操作按钮和其他的隐藏的溢出按钮都需要定义在菜单资源的XML文件中。

在 res/menu 目录下添加一个 main_activity_actions.xml(此目录已经有的main.xml不去管它),内容如下:

android:icon="@drawable/ic_action_search"

android:title="@string/action_search"

android:showAsAction="ifRoom" />

android:title="@string/action_settings"

android:showAsAction="never" />

说明:

1)  action_search 这个是需要在  strings.xml 中添加的(上一篇介绍过)

131326483

2)   @drawable/ic_action_search

ic_action_search 是图标的名字。

相关的图标可以先到 :

http://commondatastorage.googleapis.com/androiddevelopers/design/Android_Design_Icons_20131106.zip

下载, 下载后解压,

到 Android Design - Icons 20131120\Action Bar Icons\holo_dark\01_core_search目录下把以下的四个文件夹复制到 app 的res 目录。

131326484

3)  showAsAction="ifRoom" 的作用是:

如果空间足够的话, 就把这个按钮放在操作栏上; 否则放在overflow 隐藏。

showAsAction还有其他配置 如: always ; ifRoom|withText

从字面上很容易就猜到是配置什么的。

2. 将操作按钮添加到操作栏.

这里就是修改 MainActivity 的 onCreateOptionsMenu() 的方法了, 修改后内容如下:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu items for use in the action bar

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.main_activity_actions, menu);

return super.onCreateOptionsMenu(menu);

}

3. 操作按钮点击效果

修改 MainActivity 的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;

}

return super.onOptionsItemSelected(item);*/

switch(item.getItemId()){

case R.id.action_search:

//openSearch();

return true;

case R.id.action_settings:

//openSettings();

return true;

default:

return super.onOptionsItemSelected(item);

}

}这里暂且不关注点击后的实际效果。

好了, 基本上完成了。

重新运行看看。

发现, Action 按钮一直在隐藏的Overflow 中, 没有出现在操作栏上

Actions Item 不显示在Action Bar 上

如果应用使用支持包的话, "android: “ 的命名空间是没有showAsAction这个属性的。

替代方式是:

xmlns:yourapp="http://schemas.android.com/apk/res-auto" >

android:icon="@drawable/ic_action_search"

android:title="@string/action_search"

yourapp:showAsAction="ifRoom" />

...

yourapp -  这个是可以根据自己的需要来命名。只要在menu 定义了, 在Item 里使用了即可。

再次运行, 一切ok.

给低层的活动添加向上的按钮

当使用的是Android 4.1 (API 16)及以上的版本的话, 只需要简单配置就可以添加向上按钮, 点击它就可以回到上一级的页面了。

在前面两篇中, 有介绍到如何添加一个新的 activity

[Android系列—] 2. Android 项目目录结构与用户界面的创建

[Android系列—] 3. 启动另外的活动(Activity)这里直接修改 DisplayMessageActivity 的 onCreate 方法, 修改后结果如下:

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_display_message);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

// If your minSdkVersion is 11 or higher, instead use:

// getActionBar().setDisplayHomeAsUpEnabled(true);

/*if (savedInstanceState == null) {

getSupportFragmentManager().beginTransaction()

.add(R.id.container, new PlaceholderFragment()).commit();

}*/

}

其他部分无需更改。

执行后效果如下:

131326485

给操作栏添加样式

Android 包含了集中内置的主题, 像 “暗色”或"亮色"的操作栏风格, 同样可以通过扩展这些主题来客制自己需要的操作栏风格。

需要注意的是: 如果使用的是支持库的API来创建的操作栏, 需要使用或重写 Theme.AppCompat, 而不是Theme.Holo(在API 11 或更高版本提供)。 这样的话, 在定义样式属性的时候就要定义两次了, 一个是平台的样式属性, 一次是支持库的样式属性。

1. 使用Android 的主题

安卓提供了两种基本的活动主题:

1) Theme.Holo   -- “暗”主题

2)  Theme.Holo.Light  -- “亮”主题

使用方式很简单, 就是设置 元素的android:theme的值, 或是设置各个 的android:theme的值

还可以整体使用深色调,而对操作栏使用  Theme.Holo.Light.DarkActionBar  来定义使用深色调。

如果是使用支持可的话, 就要使用 Theme.AppCompat 的主题了

Theme.AppCompat  “暗” 主题

Theme.AppCompat.Light “亮”主题

Theme.AppCompat.Light.DarkActionBar  “亮”主题,但是有一个“暗”色调的操作栏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值