Android中改变Activity的不同icon:activity-alias
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的更多相关文章
- 详解Android中的四大组件之一:Activity详解
activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态. paused:暂停,处于失去焦点的时候,处于pa ...
- Android中如何解决输入法键盘和activity页面遮挡的问题
不希望遮挡设置activity属性android:windowSoftInputMode="adjustPan" 希望动态调整高度android:windowSoftInputMo ...
- Android中如何解决editText一进入activity就自动获取焦点的bug
有时候我们在进入activity 的时候,EditText会自动聚焦 有人说搞个宽高 都为0dp的EditText 但是我们搞代码的肯定要从实际层面解决,这样更能说服人 所以只需要在EditText的 ...
- Android中改变dialog的显示的位置和大小
private void setDialogSize(Dialog dg) { Window dialogWindow = dg.getWindow(); WindowManager.LayoutPa ...
- Android中Activity启动模式详解
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- Android中Style和Theme的使用
Style: Style是View中一些属性的集合,包括height,padding,font color,background等等,Style单独定义在xml文件中,类似与web页面中css的角色, ...
- android中使用jni对字符串加解密实现分析
android中使用jni对字符串加解密实现分析 近期项目有个需求.就是要对用户的敏感信息进行加密处理,比方用户的账户password,手机号等私密信息.在java中,就对字符串的加解密我们能够使用A ...
- Android中软键盘弹出时底部菜单上移问题
当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...
- Android中软键盘弹出时关于布局的问题
当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncre ...
随机推荐
- C# static 字段初始值设定项无法引用非静态字段、方法或属性
问题:字段或属性的问题字段初始值设定项无法引用非静态字段.方法 下面代码出错的原因,在类中定义的字段为什么不能用? public string text = test(); //提示 字段或属性的问题 ...
- 使用CodeMaid自动程序排版[转]
前言 「使用StyleCop验证命名规则」这篇文章,指引开发人员透过StyleCop这个工具,来自动检验项目中产出的程序代码是否合乎命名规则. [Tool] 使用StyleCop验证命名规则 但是在项 ...
- 百度离线地图API开发V2.0版本
全面介绍,请看下列介绍地址,改写目前最新版本的百度V2.0地图,已全面实现离线操作,能到达在线功能的95%以上 http://api.jjszd.com:8081/apituiguang/gistg. ...
- Qt信号与槽 如何写2个类,一个发送信号,一个接收并处理
题目: 假设要做2个类,一个类的值提供一个函数SetValue,当这个值发生变化时,假设>10就触发告警调用B的函数; ------------------------------------- ...
- webservice不能序列化接口问题,返回值为IList或者参数为接口的解决办法。
1. webservice 不能返回泛型接口集合IList,解决办法如下链接: 参考资料:http://www.cnblogs.com/yinhaiming/articles/1379424.html ...
- 「TJOI2015」线性代数
题目链接 戳我 \(Describe\) 题目描述 为了提高智商,\(ZJY\)开始学习线性代数.她的小伙伴菠萝给她出了这样一个问题:给定一个\(n×n\)的矩阵\(B\)和一个\(1×n\)的矩阵\ ...
- 如何调用写好的指定模块?——sys.path
python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...
- 拆半搜索binary_search
//binary_search用于在有序的区间用拆半查找搜索等于某值得元素 #include<algorithm> #include<iostream> using names ...
- 洛谷P3779 [SDOI2017]龙与地下城(概率论+Simpson+FFT)
题面 传送门 题解 orz shadowice 正态分布 正态分布是随机变量\(X\)的一种概率分布形式.它用一个期望\(\mu\)和方差\(\sigma^2\)就可以描述,记为\(N(\mu,\si ...
- docker kubernetes swarm spring cloud结合学习资源
http://www.docin.com/p-2062732301.html https://blog.csdn.net/michael_hm/article/details/79213839 htt ...