web-dev-qa-db-ja.com

アンドロイド:カスタムタイトルバー

カスタムタイトルバーがあります

 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が背景色を設定するために必要な場合、顧客テーマで背景色を設定すると、色付きの背景の周りに灰色の領域が表示されます。ですから、力を閉じなくても、タイトルがないことが役立つかどうかはわかりません。

何か案が?

11
paradroid666

私はあなたと同じ問題を抱えていました。

問題はあなたがあなたのスタイルで持っている何かにあります。

これを試してみてください:

<?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>
14
Macarse

これは私にとって唯一のものであり、カスタムタイトルが開始される前にデフォルトタイトルを防ぎます。

<?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>
3
Martin L.

customTitleがサポートされているかどうかも確認する必要があります。

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



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

}
0
Jawad Zeb

アプリに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に関するそのコードは必要ありません。

0