繁体   English   中英

Android:自定义标题栏

[英]Android: Custom Title Bar

我有一个自定义标题栏

 requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
 setContentView(R.layout.activities);
 getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);

哪个工作基本上很好。 问题是,在调用上面的代码之前,会显示默认标题栏。 我根本不想要一个标题栏,换句话说,在我出现之前不会出现任何标题。

将此添加到清单:

<application android:theme="@android:style/Theme.NoTitleBar">

导致力量关闭。 我的清单看起来像这样

<application android:icon="@drawable/icon" android:label="@string/app_name"
    android:theme="@style/My_Theme">

我需要my_Theme,因为它设置了背景颜色,在我的客户主题中设置背景颜色会导致我的彩色背景周围的灰色区域。 因此,即使没有力量关闭,我也不确定没有标题会有所帮助。

任何的想法?

我和你有同样的问题。

问题在于你的风格。

试试这个:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="My_Theme">
        <item name="android:windowTitleSize">35dp</item>
        <item name="android:windowTitleBackgroundStyle">@android:color/black</item>
    </style>
</resources>

这是我唯一的一个,它会在我的自定义标题启动之前阻止默认标题:

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

    <style name="CustomWindowTitleStyle">
        <item name="android:textColor">@android:color/transparent</item>
    </style>

    <style name="CustomTheme" parent="@android:style/Theme.Holo">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowTitleBackgroundStyle">@android:color/transparent</item>
        <item name="android:windowTitleSize">50dp</item>
        <item name="android:windowTitleStyle">@style/CustomWindowTitleStyle</item>
    </style>

</resources>

你还应该检查是否支持customTitle。

Boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);



if (customTitleSupported) {
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title);

}

首先,如果你的应用程序有NoTitleBar,你为什么要使用自定义标题栏? 那太傻了!

不用说,这是你的问题,你必须删除那个标志。

无论如何,添加自定义标题栏的最佳方法是仅在xml中。 这可以避免您的应用加倍标题栏; 哪些用户会看到。

../res/styles.xml

<resources>

   <style name="AppTheme parent="@style/android:Theme.Light">
      <item name="android:windowNoTitle">false</item>
      <item name="android:windowTitleSize">30dp</item
      <item name="android:windowTitleStyle">@layout/custom_title</item>
   </style>

</resources>

然后你不需要关于requestAnything的代码。

您的应用程序崩溃,因为在您的代码中,您从窗口功能调用标题栏,而在另一侧,您通过清单禁用它。 基本上你不能这样做,它在逻辑上是不正确的。 您需要修改标题栏,不要将其删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM