1. ホーム
  2. アンドロイド

[解決済み】ランチャーにアクティビティタイトルとは別のラベルを設定するには?

2022-04-02 09:36:21

質問

この質問は以前にもされたことがありますが、満足のいく回答は得られませんでした。そこで、もう一度試してみます。

アプリケーションのランチャーアイコン(スタート画面に表示されるもの!)に、別の短いキャプションを付けたいのですが、どうすればよいでしょうか?ランチャーのラベルは、メインアクティビティのラベルに関するmainfestのセクションから、以下のように取得するようです。

<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

私はすでにここで、私のアプリの名前@string/app_nameへのオリジナルの参照を、別の短い文字列リソースに変更しました。

しかし - 大きい BUT もちろん、このアクティビティのデフォルトのタイトルも変更されます。長いアプリケーション名には十分なスペースがありますから。で長いタイトルを再び設定します。 onCreate を使って setTitle(int) というのも、短い名前がユーザーに見える時間は短いのですが、気づくには十分な長さだからです

そして - カスタムタイトルバーについて言及することで、私の質問に答えないでください...。私は、くだらない文字列のタイトルのために、そんな長い道のりを歩きたくありません! また、カスタムタイトルバーは、あまり効果がないため、描くのが面倒です。

以下のものはありますか? 簡単な方法 ランチャーに別の文字列を表示させるだけでいいのでしょうか? ご回答ありがとうございました。

編集してください。 もうひとつ、カスタムタイトルバーが面倒な理由は、デフォルトのタイトルバーと同じようには見えないからです。結局のところ、異なる外観を望まないのであれば、それは解決策にはなり得ません。

どうすればいい?

どうやら <intent-filter> はlabel属性を持つことができます。これがない場合、ラベルは親コンポーネント(ActivityまたはApplication)から継承されます。つまり、これを使えば、ランチャーアイコンにラベルを設定しつつ、アクティビティに独自のタイトルを設定することができます。

エミュレータでは動作しますが、実機では使用するランチャーの実装に依存するため、動作しない可能性があることに注意してください。

http://developer.android.com/guide/topics/manifest/intent-filter-element.html

<activity
  android:name=".ui.HomeActivity"
  android:label="@string/title_home_activity"
  android:icon="@drawable/icon">
  <intent-filter android:label="@string/app_name">
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

補足: <intent-filter> は icon 属性を持つこともできますが、その場合 不可解なことに、それは ではなく で指定されたアイコンをオーバーライドします。 アクティビティです。このことは、ネイティブの SDK 11+のActionBarは、IconとLogoで指定されたものを使用します。 アクティビティ

情報を追加しました。 ラベルはApplicationではなくActivityから継承しています。

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"       
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".StartActivity"
            android:label="@string/app_long_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

この場合、app_long_nameは、上記のように内部にラベルを貼らなければ、ランチャーアイコンと一緒に表示されます。