web-dev-qa-db-ja.com

アクションバーのタイトルとサブタイトルの設定

コンパイル前にアクションバーのタイトルと字幕を設定したい。私はこのようにそれを行う方法を得ました:

ActionBar ab = getActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");

しかし、私は実行時にそれをしたくありません。これらのタイトルを指定できるxmlファイルまたは場所はありますか?

私はこれを達成しようとしています:

enter image description here

編集:

Xmlで必要な理由は、アプリをAPIレベル8でサポートすることと、メソッドgetActionBar()が少なくともレベル11でサポートされることです。

59
Adil Malik

次のようなことをして、両方のバージョンのコードを作成できます。

/**
 * Sets the Action Bar for new Android versions.
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void actionBarSetup() {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    ActionBar ab = getActionBar();
    ab.setTitle("My Title");
    ab.setSubtitle("sub-title"); 
  }
}

次に、actionBarSetup()onCreate()を呼び出します。 ifは新しいAndroidバージョンでのみコードを実行し、@TargetApiはコードのコンパイルを許可します。したがって、古いAPIバージョンと新しいAPIバージョンの両方で安全になります。

または、 ActionBarSherlockeditを参照)を使用して、すべてのバージョンでActionBarを使用することもできます。アクティビティでSherlockActivityを拡張したり、getSupportActionBar()を呼び出したりするなど、いくつかの変更を行う必要がありますが、これは非常に優れたグローバルソリューションです。

編集

この回答が最初に書かれたとき、それ以降deprecatedであったActionBarSherlockが互換性のある解決策であったことに注意してください。

現在、 Googleのappcompat-v7ライブラリ は同じ機能を提供しますが、Googleによってサポートされています(そして積極的に更新されています)。 ActionBar を実装するアクティビティは、次の条件を満たしている必要があります。

  • AppCompatActivityを拡張
  • Theme.AppCompat派生物を使用する

このライブラリを使用してActionBarインスタンスを取得するには、適切な名前のgetSupportActionBar()メソッドが使用されます。

90
A--C

アクションバーのタイトルは、次のAndroidManifestにあります。

<activity 
    . . .
          Android:label="string resource" 
    . . .
</activity>

Android:labelアクティビティのユーザーが読み取り可能なラベル。アクティビティをユーザーに表示する必要がある場合、ラベルは画面に表示されます。多くの場合、アクティビティアイコンとともに表示されます。この属性が設定されていない場合、代わりにアプリケーション全体に設定されたラベルが使用されます(要素のlabel属性を参照)。アクティビティのラベルは、ここで設定してもエレメントで設定しても、すべてのアクティビティのインテントフィルターのデフォルトラベルです(エレメントのlabel属性を参照)。ラベルは、ユーザーインターフェイスの他の文字列のようにローカライズできるように、文字列リソースへの参照として設定する必要があります。ただし、アプリケーションの開発中に便利なように、生の文字列として設定することもできます。

13

これを試してください:

Android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle("This is Title");
ab.setSubtitle("This is Subtitle");
9

サポートライブラリV7からコメントされていない、Google ActionBarSupportによって実装された別のオプションがあります。これは、Android 2.2から最後まで互換性のあるActionBarです。
ActionBarを変更すると、すべてのAndroidバージョンでgetSupportActionBar().setTitle("")を実行できます。

5
user3144006
    <activity Android:name=".yourActivity" Android:label="@string/yourText" />

このコードをAndroidマニフェストファイルに配置すると、アクションバーのタイトルが必要なものに設定されます。

3
Rayyaan Mustafa

いや!実行時に行う必要があります。

アプリに後方互換性を持たせたい場合は、デバイスのAPIレベルを確認してください。 11より高い場合は、ActionBarをいじって字幕を設定できます。

if(Integer.valueOf(Android.os.Build.VERSION.SDK) >= 11){
    //set actionbar title
}
3
Victor KP

これを試してください

マニフェストファイルに移動するだけです。そして、マニフェストファイルで各アクティビティのラベルを定義しました。

<activity
        Android:name=".Search_Video"
        Android:label="@string/app_name"
        Android:screenOrientation="portrait">
    </activity>

ここで変わる

Android:label = "@ string/your_title"

1

これを試して:

Strings.xmlにタイトルとサブタイトルを追加します...

ActionBar ab = getActionBar();
ab.setTitle(getResources().getString(R.string.myTitle));
ab.setSubtitle(getResources().getString(R.string.mySubTitle));
1
drulabs

これはコトリンの些細なワンライナーです

supportActionBar?.title = getString(R.string.coolTitle)

1
SARose
supportActionBar?.title = "Hola tio"
supportActionBar?.subtitle = "Vamos colega!"
1
Andrey

アクティビティの場合、このアプローチを使用して、マニフェストでサブタイトルとタイトルを指定できます。

マニフェスト:

<activity
    Android:name=".MyActivity"
    Android:label="@string/my_title"
    Android:description="@string/my_subtitle">
</activity>

アクティビティ:

try {
    ActivityInfo activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
    //String title = activityInfo.loadLabel(getPackageManager()).toString();
    int descriptionResId = activityInfo.descriptionRes;
    if (descriptionResId != 0) {
        toolbar.setSubtitle(Utilities.fromHtml(getString(descriptionResId)));
    }
}
catch(Exception e) {
    Log.e(LOG_TAG, "Could not get description/subtitle from manifest", e);
}

この方法では、タイトル文字列を1回指定するだけで、サブタイトルをそのすぐ横に指定することができます。

0

AndroidManifest.xmlを使用して、アクションバーでタイトルを設定できます。ラベルをactivityに追加します

<activity
            Android:name=".YourActivity"
            Android:label="Your Title" />
0
Ricky