最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】把android的titlebar/actionbar中的文字/字符串换为图标

Android crifan 5153浏览 0评论

【背景】

android的app中,原先是:

previous save settings is text

即:

对应的是标题栏(actionbar,titlebar)中,菜单按钮是文字,

想要换成图标。

注:

此处对应的配置是:

xml的配置:

res\menu\field_view_menu.xml

的:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/save_edited_fields"
        android:orderInCategory="10"
        android:showAsAction="always"
        android:title="@string/save"/>

</menu>

和:

res\menu\file_item.xml

的:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"/>

</menu>

对应的文字内容是:

res\values\strings.xml

的:

<?xml version="1.0" encoding="utf-8"?>
<resources>
......
    <string name="save">Save</string>
    <string name="setting">Setting</string>
......
</resources>

 

 

【解决过程】

1.参考:

Menu Resource

去把android:title换成android:icon

改为:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"
        android:icon="@drawable/settings"/>

</menu>

看看效果。

不行。还是文字。

2.参考:

ActionBar Action Items not showing

加上:

xmlns:app="http://schemas.android.com/apk/res-auto"
变成:
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/action_settings"
        android:icon="@drawable/settings"/>

</menu>

看看效果。结果问题依旧。

3.不过,貌似改错xml文件了?

所以去改:

res\menu\common_status_view_menu.xml

为:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/setting_menu"
        android:orderInCategory="100"
        android:showAsAction="ifRoom"
        android:title="@string/setting"
        android:icon="@drawable/settings"/>
</menu>

试试。

结果是可以的。

4.再去修改另外的:

res\menu\field_save_status_view_menu.xml

为:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/save_edited_fields"
        android:orderInCategory="100"
        android:showAsAction="ifRoom"
        android:title="@string/save"
        android:icon="@drawable/save"/>
</menu>

结果是:

可以正确显示了:

has change text to icon on titlebar

【总结】

把之前的xml中的menu,本身带了:

android:title="@string/save"

再添加上对应的:

android:icon="@drawable/save"

再去添加对应的

res/drawable/save.png

即可。

注:

1.对于别的图片,比如另外那个settings,也是同样操作即可。

2.貌似添加jpg图片,不支持。

估计是

res/drawable

只支持png,而不支持jpg图片。

转载请注明:在路上 » 【已解决】把android的titlebar/actionbar中的文字/字符串换为图标

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
83 queries in 0.199 seconds, using 22.08MB memory