[英]Android : How to replace navigation-drawer icons with font-awesome icons(icons available)
我正在开发一个 Android 项目,其中有一个导航抽屉,其中显示了GroupSection
对象的列表。 所有 GroupSection 对象都包含一个部分图标。 抽屉图标由 TypedArray 和一些 android 特定语法确定以获取资源。 我想用字体很棒的图标替换它。 每个 groupSection 对象都有一个 getter groupSection.getSectionIcon();
它返回我的图标字符串。 我在 String.xml 中添加了图标,并在 assets 目录中有fontawesome-webfont.ttf
。
我只是不知道如何用字体真棒图标替换类型化数组。 我尝试了findViewByID(R.id.awesome_icon).getId()
和其他一些可能性。 谢谢你。
代码 :
public void set(List<RestSection> restSectionList, TypedArray navMenuIcons, Long groupId,
int canvasid, int sectionId) {
// Below are default icons
navMenuIcons = getResources()
.obtainTypedArray(R.array.nav_drawer_icons);
for (RestSection restSection : restSectionList) {
// As you can see I am accessing the icons with there resource id.
navDrawerItems.add(new DrawerModel(restSection.getMsectionname(),
navMenuIcons.getResourceId(0, -1), restSection.getMsectionid()));
}
string.xml 示例:
<string name="pinterest"></string>
<string name="pinterest_square"></string>
<string name="google_plus_square"></string>
<string name="google_plus"></string>
<string name="money"></string>
<string name="caret_down"></string>
<string name="caret_up"></string>
<string name="caret_left"></string>
<string name="caret_right"></string>
<string name="columns"></string>
在 for 循环中,我可以使用 getter 直接获取图标字符串,但设置它是问题所在。 你能帮忙的话,我会很高兴。 谢谢你。 :-)
更新
我尝试了以下手动设置的代码,但我也遇到了错误:
Unable to find resource: 2131165836
android.content.res.Resources$NotFoundException: File from drawable resource ID #0x7f07028c
at android.content.res.Resources.loadDrawableForCookie(Resources.java:2640)
at android.content.res.Resources.loadDrawable(Resources.java:2540)
at android.content.res.Resources.getDrawable(Resources.java:806)
at android.content.Context.getDrawable(Context.java:458)
at android.widget.ImageView.resolveUri(ImageView.java:811)
at android.widget.ImageView.setImageResource(ImageView.java:418)
代码 :
for (RestSection restSection : restSectionList) {
if (restSection.getSectionIcon() != null) {
DrawerModel drawerModel = new DrawerModel();
drawerModel.setTitle(restSection.getMsectionname());
drawerModel.setId(restSection.getMsectionid());
drawerModel.setIcon(R.string.try_icon);
navDrawerItems.add(drawerModel);
} else {
navDrawerItems.add(new DrawerModel(restSection.getMsectionname(),
navMenuIcons.getResourceId(0, -1), restSection.getMsectionid()));
}
}
字体真棒是文字。 因此,如果您想将它们用作图标,则需要将它们转换为可绘制的。
您可以使用此TextDrawable
示例: https : TextDrawable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.