Androidアクションバーのタイトルとアイコンを変更するには


225

AndroidのActionBarでいくつかのことを実行しようとしています。

アクションバーの右側に新しいアイテムを追加しました。

アクションバーの左側を変更するにはどうすればよいですか?アイコンとテキストを変更し、他の画面のアクションバーに「戻るボタン」を追加したい

Androidアクションバー

回答:


514

これは非常に簡単です

コードで変更する場合は、次を呼び出します。

setTitle("My new title");
getActionBar().setIcon(R.drawable.my_icon);

そして、値を好きなように設定します。

または、AndroidマニフェストXMLファイルで:

<activity android:name=".MyActivity" 
       android:icon="@drawable/my_icon" 
       android:label="My new title" />  

アプリで戻るボタンを有効にするには、次のようにします。

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);

onCreateラベル/アイコンの変更がユーザーに透過的であるようにコードをすべてに配置する必要がありますが、実際にはアクティビティのライフサイクル中のどこからでも呼び出すことができます。


23
サポートライブラリを使用してアクションバーを追加する場合は、getSupportActionBarではなくを使用してくださいgetActionBar
Rick Pastoor 2013年

3
getActionBar().setHomeButtonEnabled(true)古いレベルのAPIだけでなく新しいAPIでも戻るボタン機能が必要な場合は、APIレベル14以上を使用しますgetActionBar().setDisplayHomeAsUpEnabled(true)
Akshat Agarwal

3
getSupportActionBar()。setDisplayShowTitleEnabled(true); setTitle( "123");の前。
ホセマヌエルアバルカロドリゲス

コードgetActionBar()。setIcon(R.drawable.my_icon);を使用する場合 クリック可能にできますか?
Skitty 2015

1
@JoseManuelAbarcaRodríguezありがとう、それは私にとって欠けていたものです。Kotlinには:supportActionBar?.setDisplayShowTitleEnabled(true)その後supportActionBar?.title = "your title"。また、でアクティビティを作成する場合はonResume、ではなくで行う必要がonCreateありstartActivityます。
Eric Aya

18

1つのアイコンをすべてのアクションバーで使用できるようにするには、Androidマニフェストでこれを実行できます。

<application
    android:logo="@drawable/Image">

    ...

</application>

1
おかげで、私はアプリの外に別のアイコン(「すべてのアプリ」に表示される)とアクションバーの左側にある別のアイコンが欲しかった。そして、これはうまくいきました。マニフェストファイルにandroid:icon = "@ drawable / ic_launcher"が含まれている
flobacca 2014年

2
これはpre-loadsアイコンであるため、正しい方法です。プログラムで設定アイコンが遅いのです。
Muhammad Babar 2014

11

これらの3行のコードを追加するだけです。アイコンを独自のアイコンに置き換えます。アイコンを生成したい場合は、これを使用してください

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);

11

Android 5.0のマテリアルデザインガイドラインでは、actionBarでのアイコンの使用を推奨していません

有効にするには、次のコードを追加します

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

クレジットはこの記事の著者に行く


9

アクションバーのタイトルを変更する場合は、アクティビティのonCreate()に次の1行のコードを追加します。

getActionBar().setTitle("Test");

このタイトル変更をアニメーション化するにはどうすればよいですか?
Srikar Reddy 2016

7

アイコンを変更するには、それぞれのドローアブルフォルダーに任意のアイコンを追加し、AndroidManifest.xmlファイルでこの行を変更します。

android:icon="@drawable/ic_launcher"

アイコンの名前がそこにあるものと一致します。または、アイコンが同じアイコンの場合は、ic_launcherとしてアイコンを配置します。それが言うことに関しては、res / values / strings.xmlファイルの文字列に一致する文字列を追加または変更します。次に、もう一度AndroidManifest.xmlファイルで、次の行を変更します。

android:label="@string/app_name"

あなたが彼らに持っている文字列に何でも。これは、アプリケーション全体、およびどのアクティビティでも必要ですが、行は同じです。

お役に立てれば。


これandroid:iconはアクティビティタグでどのサイズ(dp)にする必要 がありますか?
cuddlecheek


5

そのためには、XMLまたはJavaの2つの方法でそれを行うことができます。こちらをご覧ください:アクションバーのテキストを変更する方法

そう:

XML:

<activity android:name=".Hello_World"
              android:label="This is the Hello World Application">
</activity>

Java:

public class TitleBar extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

       setContentView(R.layout.main);


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

       final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
       if ( myTitleText != null ) {
           myTitleText.setText("NEW TITLE");

           // user can also set color using "Color" and then "Color value constant"
          // myTitleText.setBackgroundColor(Color.GREEN);
       }
 }
}

2
コードからそれを行うには、setTitle(CharSequence text)またはを呼び出す必要がありsetTitle(int titleRes)ます。requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)タイトルバー全体を独自のカスタムビューに置き換える予定がない限り、使用しないでください。
からくり

3

セットのタイトル

getActionBar().setTitle("Title");

セットアイコンの場合

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);

2

内部で次の呼び出しを使用しましたonNavigationItemSelected

HomeActivity.this.setTitle(item.getTitle());


1

私にとってこの作品:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);

0

アクションバーのタイトルには、デフォルトで現在のアクティビティのラベルが使用されますが、を使用してプログラムで設定することもできますActionBar.setTitle()

話している「戻る」(より正確には「上へ」)ボタンの機能を実装するには、アクションバー開発者ガイドの「ナビゲーションのためのアプリアイコンの使用」セクションをお読みください

最後に、アイコンを変更するために、ガイドはそれもカバーしています。要するに、アクションバーにandroid:iconは、マニフェストのapplicationまたはactivity要素で提供されている画像があれば、それが表示されます。典型的な方法は、という名前のアプリケーションアイコンを(必要なさまざまな密度のすべてで)作成し、ic_launcher.pngそれをdrawable-*ディレクトリに配置することです。


0

静的なPlaceholderFragmentクラスでnon-static method setTitle(CharSequence) cannot be referenced from a static context使用setTitle()したため、エラーが発生しました。私はそれを使って解決しましたgetActivity().getActionBar().setTitle("new title");



0

AndroidManifest.xmlファイルに移動します。<application>タグを見つけますそこに属性があります

android:label="@string/app_name"

次に、res> values> strings.xmlに移動します

変更

<string name="app_name">MainActivity</string> 

<string name="app_name">Your Desired Name</string>

AndroidManifest.xml

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubmitForm">

        </activity>
    </application>

strings.xml

<resources>
    <string name="app_name">Your Desired Name</string>
    <string name="action_settings">Settings</string>
</resources>

0

次のようにすることもできます:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.