Android设置title中的Icon有几种方法,介绍如下:

一种是直接在AndroidManifest.xml文件中设置android:icon属性,这种方法简单有效,应该算是我们最常用的设置Icon的方法:

<activity android:name=".activities.ImportExportSimCardActivity"             android:label="@string/exportsimcardtitle"            android:icon="@drawable/ic_activity_export_sim"             android:theme="@style/ImportExportSimCardActivityTheme" >         </activity>

但有些时候我们希望在代码中可以动态更改Icon,或者说有可能两个Activity其实共用一份代码,需要看情况设置icon,如下面的情况:

于是另一种方法,在代码中改变。可以使用 requestWindowFeature(Window.FEATURE_LEFT_ICON)setFeatureDrawableResource()函数。

package com.android.importexport;  import android.app.Activity; 
import android.os.Bundle;  import android.view.Window;  public class Test01 extends Activity {      /** Called when the activity is first created. */      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState); 
                  requestWindowFeature(Window.FEATURE_LEFT_ICON);          // requestWindowFeature()必须在setContentView()之前,否则会报错;         // requestWindowFeature()操控的对象还有:         // 1.DEFAULT_FEATURES:系统默认状态,一般不需要指定         // 2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定         // 3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时         // 4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度         // 5.FEATURE_LEFT_ICON:标题栏左侧的图标         // 6.FEATURE_NO_TITLE:无标题         // 7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。         // 8.FEATURE_PROGRESS:进度指示器功能         // 9.FEATURE_RIGHT_ICON:标题栏右侧的图标                   setContentView(R.layout.main);           setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.ic_activity_export_sim);      }  }

以上代码可以解决icon改变的问题,但是在Android3.0 HoneyComb中ActionBar会无法获取(getActionBar返回null),而且需要重新自定义title的格式了。无法使用HoneyComb自定义的风格,这个很鸡肋。

于是可以考虑第三种方法,使用activity-alias,它可以快速指向到一个Activity,但同时又能各自定义不同的icon,实现如下:

<!-- <Kenny.z>> Activity for Export Contacts to SimCard -->         <activity android:name=".activities.ImportExportSimCardActivity"             android:label="@string/exportsimcardtitle"             android:icon="@drawable/ic_activity_export_sim"             android:theme="@style/ImportExportSimCardActivityTheme" >         </activity>         <activity-alias android:name="ExportSimCardActivity"          android:targetActivity=".activities.ImportExportSimCardActivity"             android:label="@string/exportsimcardtitle"             android:icon="@drawable/ic_activity_export_sim"             android:theme="@style/ImportExportSimCardActivityTheme">             <intent-filter>                 <action android:name="com.android.contacts.action.EXPORT_TO_SIM" />                 <category android:name="android.intent.category.DEFAULT" />             </intent-filter>         </activity-alias>         <activity-alias android:name="ImportSimCardActivity"          android:targetActivity=".activities.ImportExportSimCardActivity"             android:label="@string/exportsimcardtitle"             android:icon="@drawable/ic_activity_import_sim"             android:theme="@style/ImportExportSimCardActivityTheme">             <intent-filter>                 <action android:name="com.android.contacts.action.IMPORT_FROM_SIM" />                 <category android:name="android.intent.category.DEFAULT" />             </intent-filter>         </activity-alias>

Android中改变Activity的不同icon:activity-alias的更多相关文章

  1. 详解Android中的四大组件之一:Activity详解

    activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态. paused:暂停,处于失去焦点的时候,处于pa ...

  2. Android中如何解决输入法键盘和activity页面遮挡的问题

    不希望遮挡设置activity属性android:windowSoftInputMode="adjustPan" 希望动态调整高度android:windowSoftInputMo ...

  3. Android中如何解决editText一进入activity就自动获取焦点的bug

    有时候我们在进入activity 的时候,EditText会自动聚焦 有人说搞个宽高 都为0dp的EditText 但是我们搞代码的肯定要从实际层面解决,这样更能说服人 所以只需要在EditText的 ...

  4. Android中改变dialog的显示的位置和大小

    private void setDialogSize(Dialog dg) { Window dialogWindow = dg.getWindow(); WindowManager.LayoutPa ...

  5. Android中Activity启动模式详解

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...

  6. Android中Style和Theme的使用

    Style: Style是View中一些属性的集合,包括height,padding,font color,background等等,Style单独定义在xml文件中,类似与web页面中css的角色, ...

  7. android中使用jni对字符串加解密实现分析

    android中使用jni对字符串加解密实现分析 近期项目有个需求.就是要对用户的敏感信息进行加密处理,比方用户的账户password,手机号等私密信息.在java中,就对字符串的加解密我们能够使用A ...

  8. Android中软键盘弹出时底部菜单上移问题

    当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...

  9. Android中软键盘弹出时关于布局的问题

     当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncre ...

随机推荐

  1. asp.net 设置分页

    private const int PAGESIZE = 5; //定义每页有五行数据 private void FillPageList() { int pageCount = 0; // page ...

  2. [.net 多线程 ]ReaderWriterLock

    ReaderWriterLock 用于同步对资源的访问.在任一特定时刻,它允许多个线程同时进行读访问,或者允许单个线程进行写访问.在资源不经常发生更改的情况下,ReaderWriterLock 所提供 ...

  3. ECS服务里或者阿里云服务器的二级域名设置方法

    我们要实现的效果是,xuxinshuai.abc.com ,具体怎么实现,看下面的流程 第一步:备案域名要有,假如就是www.abc.com 第二步:网站的服务器是IIS的情况下,在部署网站时,需要设 ...

  4. 编码原则实例------c++程序设计原理与实践(进阶篇)

    编码原则: 一般原则 预处理原则 命名和布局原则 类原则 函数和表达式原则 硬实时原则 关键系统原则 (硬实时原则.关键系统原则仅用于硬实时和关键系统程序设计) (严格原则都用一个大写字母R及其编号标 ...

  5. xcode9 上传app后iTues 构建版本不显示

    1.问题原因 苹果公司更新了ios10系统和xcode9以后,做了许多调整,如果开发者没有注意就会遇到这样那样的问题.作者在更新以后就遇到了上传app到appstore成功后,没有显示的问题.下面就介 ...

  6. c编译错误[Error] ld returned 1 exit status 解决

    [Error] ld returned exit status 编译的过程中出现这个错误极有可能是因为函数名错误引起的,因此回到源码中观察函数名,尤其是那些库函数中的函数.

  7. 在一个java类里,private int a; 什么时候要使用integer

    private Integer index; if(index == null) index = 0; else this.index = index; Integer有一个明显的好处,就是它能比in ...

  8. winform程序使用clickonce方式发布之后点击安装没反应

    可能是少了index.html和web.config两个文件,这两个文件为什么没有在发布的时候生成,还有怎么影响安装的后续研究

  9. django自定义rbac权限组件(二级菜单)

    一.目录结构 二.表结构设计 model.py from django.db import models # Create your models here. class Menu(models.Mo ...

  10. postgreSQL PL/SQL编程学习笔记(四)

    Errors and Messages 1. Reporting Errors and Messages Use the RAISE statement to report messages and ...