1

我有一个应用程序,它通过使用自定义视图并在文本中设置一个小图形,在操作栏中的选项卡标题旁边添加一个小图形ImageSpan,见下文。

    private void NotifyTab ( int state )
    {
        Console.WriteLine("Notifying tab " + state );

        var tab = SupportActionBar.GetTabAt( state ).CustomView as TextView;
        String title;

        if ( ARTIST == state )
        {
            title = GetString( Resource.String.menu_artists );
        }
        else
        {
            title = GetString( Resource.String.menu_friends );
        }

        SpannableString text = new SpannableString( "  " + title );
        ImageSpan icon = new ImageSpan( this, Resource.Drawable.ico_indicator, SpanAlign.Baseline );
        text.SetSpan( icon, 0, 1, SpanTypes.InclusiveInclusive );

        tab.SetText( text, TextView.BufferType.Spannable );
    }

这段代码工作正常,直到我将与操作栏选项卡相同的样式应用到选项卡上Widget.Sherlock.ActionBar.TabText,一旦我这样做就ImageSpan停止工作了。

有谁知道是什么属性导致了这种情况以及是否有解决方法?我想知道它是由强制使用所有大写字母还是衬线字体引起的。

4

1 回答 1

1

解决了,原来如此

<item name="android:textAllCaps">true</item>

是有罪的一方,删除时ImageSpan出现。一个简单的解决方法是使字符串资源大写,问题就消失了。

于 2013-08-16T12:39:19.270 回答