【问题标题】:Change logo that appears in Android ActionBar programatically以编程方式更改出现在 Android 操作栏中的徽标
【发布时间】:2012-01-04 06:04:28
【问题描述】:
有没有办法更改出现在 ActionBar 中 Activity 中的徽标,而不是在清单中列出?
我问的原因是我有一个手机应用程序,我在顶部构建了一个类似类型的栏,左角的启动器图标类似于使用ImageView 的ActionBar。
我还允许用户在手机或互联网上将该图像更改为一张。我目前正在使该应用程序适用于平板电脑,并且只想使用ActionBar,但无法弄清楚如何根据用户更改图像。 ActionBar 类中没有方法,我找不到从资源中修改图标或徽标的方法。
有人知道这是否可行或可以建议我可以尝试的方法吗?
【问题讨论】:
标签:
android
image
icons
tablet
android-actionbar
【解决方案1】:
在 API 14 中引入 Jake 提到的 setIcon 和 setLogo 方法之前,您似乎能够通过抓取 android.R.id.home 的视图并设置新的可绘制对象来更改 ActionBar 徽标。
ImageView logo = (ImageView) findViewById(android.R.id.home);
logo.setImageDrawable(drawable);
【解决方案2】:
API 14 引入了 setIcon 和 setLogo 方法。
至于 11 到 13,没有简单的方法。
您可以使用自定义导航并通过让您自己的布局模仿其功能来隐藏常规图标/徽标。
操作栏样式中有一个homeLayout 属性,它允许指定要使用的备用布局资源,但它总是会抛出一个ClassCastException,因为它会在膨胀时立即转换为内部类(bug #21842) .