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. 中国城市 json

    点击查看完整代码,再点击复制即可复制代码. 三级json,省市区: [{ "value": "110000", "text": " ...

  2. Lucene的基本概念----转载yufenfei的文章

    Lucene的基本概念 Lucene是什么? Lucene是一款高性能.可扩展的信息检索工具库.信息检索是指文档搜索.文档内信息搜索或者文档相关的元数据搜索等操作. 信息检索流程如下: 1. 将即将检 ...

  3. 创建Database Diagrams时遇到的问题

    SQL2008 R2中时,Diagrams的问题 Error: ------------------------------ Database diagram support objects cann ...

  4. selenium面试题

    selenium中如何判断元素是否存在? selenium中没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素+异常捕获的方式判断. # 判断元素是否存在 try: dr.find_elem ...

  5. Java create azure web app

    create a certificate <java-install-dir>/bin/ keytool -genkey -alias <keystore-id> -keyst ...

  6. Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合

    一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...

  7. 浏览器端 禁止 html 使用后退 或者替换后退功能..

    知乎大佬的代码: 作者:独夜行 链接:https://www.zhihu.com/question/40511430/answer/166467343 来源:知乎 著作权归作者所有.商业转载请联系作者 ...

  8. java.math.BigDecimal cannot be cast to java.lang.String

    从数据库总查询出的count(*) 函数统计的值,类型转换方法: Map<String,Integer> map = new HashMap<String,Integer>() ...

  9. LOJ6519. 魔力环(莫比乌斯反演+生成函数)

    题目链接 https://loj.ac/problem/6519 题解 这里给出的解法基于莫比乌斯反演.可以用群论计数的相关方法代替莫比乌斯反演,但两种方法的核心部分是一样的. 环计数的常见套路就是将 ...

  10. P1353_[USACO08JAN]跑步Running 我死了。。。

    我死了...被绿题虐...看来我的水平有待提高...QWQ 好吧,就是跑步的时候只能从跑步的状态转移过来 休息的时候可以从上一次休息时转移过来,也可以从某次跑步的时转移过来,需要枚举从哪一个状态转移来 ...