将ActionBar标签更改为图像[API10]

时间:2014-12-17 22:13:21

标签: android android-actionbar

有没有办法将ActionBar标签(文本)更改为图像?

我已经消失了文字,但我无法在那里获得图片。 styles.xml在google教程中看起来像:

<resources>
    <style name="AppTheme"
        parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar"
        parent="Widget.AppCompat.Light.ActionBar.Solid">
        <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
        <item name="android:background">@drawable/full_logo</item>

        <!-- Support library compatibility -->
        <item name="titleTextStyle">@style/MyActionBarTitleText</item>
        <item name="background">@drawable/full_logo</item>
    </style>

    <!-- ActionBar title text -->
    <style name="MyActionBarTitleText"
        parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@android:color/transparent</item>
        <!-- The textColor property is backward compatible with the Support Library -->
    </style>
</resources>

但是drawable / full_logo图像是根据条形尺寸拉伸的。所以它在方向变化时会变形。

有没有办法在API 10中用图像替换文本标签? 如果没有,哪种API最低可能?感谢。

3 个答案:

答案 0 :(得分:0)

您只需将自定义视图设置为操作栏即可。所以只需将您的imageview放在那里:

final ActionBar actionBar = getSupportActionBar();

final View header = getLayoutInflater().inflate(R.layout.action_bar_header, null);
final ImageView logoImage = (ImageView) header.findViewById(R.id.action_bar_header_image);

actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setCustomView(header);

答案 1 :(得分:0)

使用徽标显示品牌形象而非标签:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="displayOptions">useLogo</item>
    <item name="logo">@drawable/full_logo</item>
</style>

请注意,从AppCompat v21开始,您不需要android:命名空间属性。如果您使用的是旧版本,则需要复制每个属性以使用android:前缀和非前缀格式。

答案 2 :(得分:0)

ianhanniballake的回答帮助我找到了解决方案:

<resources>
    <style name="AppTheme"
        parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>

    <!-- ActionBar styles -->
    <style name="MyActionBar"
        parent="Widget.AppCompat.Light.ActionBar.Solid">
        <item name="displayOptions">showHome|useLogo</item>
        <item name="logo">@drawable/full_logo</item>
    </style>
</resources>

图像自动居中(或收缩)以便可见。