2

我正在开发一个 android 应用程序,我需要使用一个图片和两个按钮来使用我的自定义标题栏。问题是,当我启动我的应用程序时,在我的自定义标题栏出现之前的 1 或 2 秒内,有一个丑陋的默认标题栏显示“我的应用程序”。最低目标 API 为 15。

在堆栈溢出中找到的所有答案都不起作用,或者成功使其消失,但对我的自定义标题栏也是如此。

这是我从我的活动中调用它的方式:

supportRequestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
super.onCreate(savedInstanceState);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.topbarclassic);

由于我的第一个视图是我不调用的片段SetContentView

这是我的自定义styles.xml:

<resources>

    <style name="theme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTitleSize">50dp</item>
        <item name="android:windowNoTitle">false</item>
    </style>

</resources>

我的自定义标题栏再次正常工作。我只需要删除应用程序启动时快速显示的默认设置。非常感谢!

4

2 回答 2

1

如果您使用此样式,则活动将在没有操作栏的情况下加载

<style name="theme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

那么你真的应该使用工具栏来设置操作栏。例如 :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize" />

</RelativeLayout>

然后在您的活动中,您可以像这样设置操作栏:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(...);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

不要忘记在您的 AndroidManifest.xml 中设置它们

    <activity
        android:name=".path.MyActivity"
        android:theme="@style/theme"/>
于 2015-09-30T03:22:12.890 回答
0

如果使用 Modge 的关于闪屏的链接找到解决我的问题的方法。

它本身并不能解决问题,但仍然是一个很好的解决方法。

我创建了一个负责启动画面的小活动,避免白色的第一个屏幕停留太久。然后这个飞溅重定向到我的主要活动。

这在我的情况下也很有用,因为我可以在启动屏幕期间启动一些连接过程。你可以按照这个例子:http ://www.androidhive.info/2013/07/how-to-implement-android-splash-screen-2/

于 2015-09-30T04:23:20.943 回答