コンパイル前にアクションバーのタイトルと字幕を設定したい。私はこのようにそれを行う方法を得ました:
ActionBar ab = getActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");
しかし、私は実行時にそれをしたくありません。これらのタイトルを指定できるxmlファイルまたは場所はありますか?
私はこれを達成しようとしています:
Xmlで必要な理由は、アプリをAPIレベル8でサポートすることと、メソッドgetActionBar()が少なくともレベル11でサポートされることです。
次のようなことをして、両方のバージョンのコードを作成できます。
/**
* 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バージョンの両方で安全になります。
または、 ActionBarSherlock (editを参照)を使用して、すべてのバージョンでActionBarを使用することもできます。アクティビティでSherlockActivity
を拡張したり、getSupportActionBar()
を呼び出したりするなど、いくつかの変更を行う必要がありますが、これは非常に優れたグローバルソリューションです。
この回答が最初に書かれたとき、それ以降deprecatedであったActionBarSherlock
が互換性のある解決策であったことに注意してください。
現在、 Googleのappcompat-v7
ライブラリ は同じ機能を提供しますが、Googleによってサポートされています(そして積極的に更新されています)。 ActionBar
を実装するアクティビティは、次の条件を満たしている必要があります。
AppCompatActivity
を拡張Theme.AppCompat
派生物を使用するこのライブラリを使用してActionBar
インスタンスを取得するには、適切な名前のgetSupportActionBar()
メソッドが使用されます。
アクションバーのタイトルは、次のAndroidManifestにあります。
<activity
. . .
Android:label="string resource"
. . .
</activity>
Android:labelアクティビティのユーザーが読み取り可能なラベル。アクティビティをユーザーに表示する必要がある場合、ラベルは画面に表示されます。多くの場合、アクティビティアイコンとともに表示されます。この属性が設定されていない場合、代わりにアプリケーション全体に設定されたラベルが使用されます(要素のlabel属性を参照)。アクティビティのラベルは、ここで設定してもエレメントで設定しても、すべてのアクティビティのインテントフィルターのデフォルトラベルです(エレメントのlabel属性を参照)。ラベルは、ユーザーインターフェイスの他の文字列のようにローカライズできるように、文字列リソースへの参照として設定する必要があります。ただし、アプリケーションの開発中に便利なように、生の文字列として設定することもできます。
これを試してください:
Android.support.v7.app.ActionBar ab = getSupportActionBar();
ab.setTitle("This is Title");
ab.setSubtitle("This is Subtitle");
サポートライブラリV7からコメントされていない、Google ActionBarSupport
によって実装された別のオプションがあります。これは、Android 2.2から最後まで互換性のあるActionBar
です。ActionBar
を変更すると、すべてのAndroidバージョンでgetSupportActionBar().setTitle("")
を実行できます。
<activity Android:name=".yourActivity" Android:label="@string/yourText" />
このコードをAndroidマニフェストファイルに配置すると、アクションバーのタイトルが必要なものに設定されます。
いや!実行時に行う必要があります。
アプリに後方互換性を持たせたい場合は、デバイスのAPIレベルを確認してください。 11より高い場合は、ActionBarをいじって字幕を設定できます。
if(Integer.valueOf(Android.os.Build.VERSION.SDK) >= 11){
//set actionbar title
}
これを試してください
マニフェストファイルに移動するだけです。そして、マニフェストファイルで各アクティビティのラベルを定義しました。
<activity
Android:name=".Search_Video"
Android:label="@string/app_name"
Android:screenOrientation="portrait">
</activity>
ここで変わる
Android:label = "@ string/your_title"
これを試して:
Strings.xmlにタイトルとサブタイトルを追加します...
ActionBar ab = getActionBar();
ab.setTitle(getResources().getString(R.string.myTitle));
ab.setSubtitle(getResources().getString(R.string.mySubTitle));
これはコトリンの些細なワンライナーです
supportActionBar?.title = getString(R.string.coolTitle)
supportActionBar?.title = "Hola tio"
supportActionBar?.subtitle = "Vamos colega!"
アクティビティの場合、このアプローチを使用して、マニフェストでサブタイトルとタイトルを指定できます。
マニフェスト:
<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回指定するだけで、サブタイトルをそのすぐ横に指定することができます。
AndroidManifest.xml
を使用して、アクションバーでタイトルを設定できます。ラベルをactivity
に追加します
<activity
Android:name=".YourActivity"
Android:label="Your Title" />