在将自定义视图应用于它之前,操作栏会显示一段时间

时间:2014-02-24 04:35:14

标签: android android-actionbar android-actionbar-compat

我使用Google提供的支持库中的ActionbarActivity。我为我的操作栏创建了一个自定义视图,其中包含附加到右侧的按钮和图像。问题是一旦活动开始我看到操作栏的默认标题(应用程序名称)和Android启动器图标(甚至不是我的启动器图标)出现在左侧一段时间,然后我的自定义视图应用。我该如何解决这个问题。我在onCreateView()之前和之前调用了以下代码,没有运气。我还有另一个问题,即使我的自定义视图设置完毕后,它仍然保留带有android徽标图标的图标,而不是我的启动器图标。

this.getSupportActionBar().setDisplayShowCustomEnabled(true);
this.getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(false);
LayoutInflater inflator = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View v = inflator.inflate(R.layout.title_view, null);
TextView tvTitle = (TextView) v.findViewById(R.id.actionbar_title);
    this.getSupportActionBar().setCustomView(v);

编辑1: 图标的问题已经解决了。我将支持库添加为单独的项目。显然,支持库中的启动器图标取代了我的启动器图标。我从支持库项目中删除了所有资源,现在我的图标正常显示。当然主要问题仍然存在。

1 个答案:

答案 0 :(得分:4)

好吧,我为此做了一些工作

我改变了我制作的操作栏的样式,使其具有透明图标和文字

<style name="MyTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
</style>


<style name="MyTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
    <item name="android:icon">@android:color/transparent</item>
    <item name="android:background">@drawable/actionbar_bg</item>
</style>

<style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@android:color/transparent</item>
</style>

2-然后在setupActionBar()方法中我手动设置颜色

private void setupActionBar() {
        getSupportActionBar().setDisplayShowHomeEnabled(false);
        this.getSupportActionBar().setDisplayShowTitleEnabled(false);
        this.getSupportActionBar().setDisplayShowCustomEnabled(true);


    LayoutInflater inflator = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflator.inflate(R.layout.title_view, null);
    TextView tvTitle = (TextView) v.findViewById(R.id.actionbar_title);
        tvTitle.setTextColor(getResources().getColor(R.color.white));
....
}