Bagaimana cara mengubah judul dan ikon android actionbar

225

Saya mencoba melakukan beberapa hal di ActionBar di Android.

Saya telah menambahkan item baru di sisi kanan bilah tindakan.

Bagaimana saya bisa mengubah sisi kiri bilah tindakan? Saya ingin mengubah ikon dan teks, dan saya ingin menambahkan "Tombol Kembali" di bilah tindakan untuk layar lain

Bilah Tindakan Android

Allan Ramirez
sumber

Jawaban:

514

Ini sangat sederhana untuk dicapai

Jika Anda ingin mengubahnya dalam kode, hubungi:

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

Dan atur nilai-nilai itu sesuai keinginan Anda.

Atau, dalam file XML manifes Android:

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

Untuk mengaktifkan tombol kembali di aplikasi Anda gunakan:

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

Semua kode harus ditempatkan di Anda onCreatesehingga perubahan label / ikon transparan bagi pengguna, tetapi dalam kenyataannya dapat dipanggil di mana saja selama siklus hidup aktivitas.

dymmeh
sumber
23
Jika Anda menggunakan pustaka dukungan untuk menambahkan bilah tindakan, gunakan getSupportActionBarsebagai ganti getActionBar.
Rick Pastoor
3
getActionBar().setHomeButtonEnabled(true)menggunakan API level 14 atau lebih tinggi, jika Anda hanya ingin fungsi tombol kembali di API lama dan baru yang Anda butuhkangetActionBar().setDisplayHomeAsUpEnabled(true)
Akshat Agarwal
3
getSupportActionBar (). setDisplayShowTitleEnabled (true); sebelum setTitle ("123");
Jose Manuel Abarca Rodríguez
Jika Anda menggunakan kode getActionBar (). SetIcon (R.drawable.my_icon); dapatkah Anda membuatnya diklik?
Skitty
1
@ JoseManuelAbarcaRodríguez Terima kasih, itu yang hilang untuk saya. Di Kotlin: supportActionBar?.setDisplayShowTitleEnabled(true)lalu supportActionBar?.title = "your title". Dan itu harus dilakukan dionResume , bukan di onCreate, saat membuat aktivitas dengan startActivity.
Eric Aya
18

Untuk membuat satu ikon dapat digunakan oleh semua bilah tindakan, Anda dapat melakukannya di Android Manifest.

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

    ...

</application>
Akshat Agarwal
sumber
1
terima kasih- Saya ingin ikon yang berbeda untuk di luar aplikasi (seperti yang terlihat di "Semua aplikasi") dan ikon lain di sebelah kiri bilah tindakan. Dan ini berhasil. File manifest masih memiliki android: icon = "@ drawable / ic_launcher"
flobacca
2
Ini adalah cara yang benar karena pre-loadsikon, ikon pengaturan program lambat!
Muhammad Babar
11

Anda hanya perlu menambahkan 3 baris kode ini. Ganti ikon dengan ikon Anda sendiri. Jika Anda ingin menghasilkan ikon, gunakan ini

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
Sagar Devanga
sumber
11

Di Android 5.0, pedoman desain materi mencegah penggunaan ikon di actionBar

untuk mengaktifkannya tambahkan kode berikut

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

kredit jatuh ke penulis artikel ini

Azzy
sumber
9

Jika Anda ingin mengubah judul bilah Tindakan, berikan 1 kode baris berikut di onCreate () dari Aktivitas Anda

getActionBar().setTitle("Test");
Jabbir Basha
sumber
Bagaimana saya bisa menghidupkan perubahan judul ini?
Srikar Reddy
7

Anda dapat mengubah ikon di Anda dengan menambahkan ikon apa pun yang Anda inginkan ke folder masing-masing yang dapat digambar, lalu mengubah baris ini di file AndroidManifest.xml Anda:

android:icon="@drawable/ic_launcher"

untuk mencocokkan apa pun nama ikon Anda di sana. Atau letakkan ikon Anda sebagai ic_launcher, jika ikonnya sama. Adapun apa yang dikatakannya, tambahkan atau ubah string apa pun yang cocok dengan itu dalam file res / values ​​/ strings.xml Anda. Kemudian, sekali lagi dalam file AndroidManifest.xml Anda, ubah baris ini:

android:label="@string/app_name"

untuk apa pun string yang Anda miliki di. Anda harus melakukan ini untuk aplikasi secara keseluruhan, dan aktivitas apa pun yang Anda inginkan, tetapi garisnya sama.

Semoga ini membantu.

Perampok
sumber
Berapa ukuran (dp) seharusnya android:icondalam tag aktivitas ini?
cuddlecheek
6
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);
Alessandro Caliaro
sumber
5

Untuk itu, Anda dapat melakukannya dengan 2 cara: XML atau Java. Lihat di sini: Cara mengubah teks pada bilah tindakan

Begitu:

XML:

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

Jawa:

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);
       }
 }
}
Miloš
sumber
2
Untuk melakukannya dari kode, Anda harus memanggil setTitle(CharSequence text)atau setTitle(int titleRes). Jangan gunakan requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)kecuali Anda berencana untuk mengganti seluruh judul bar dengan Tampilan kustom Anda sendiri.
Karakuri
3

Untuk mengatur Judul :

getActionBar().setTitle("Title");

Untuk mengatur Ikon :

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);
Bhaumik Sathvara
sumber
2

Saya menggunakan panggilan berikut di dalam onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());
AmandaHLA
sumber
1

Tambahkan kode di bawah ini di dalam fungsi onCreate dalam aktivitas Anda.

setTitle("NewName");
Chandrahasa Rai
sumber
1

Ini bekerja untuk saya:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);
Ram Chhabra
sumber
0

Judul bilah tindakan akan, secara default, menggunakan label aktivitas saat ini, tetapi Anda juga dapat mengaturnya secara terprogram melalui ActionBar.setTitle().

Untuk menerapkan fungsi tombol "Kembali" (lebih tepatnya, "Naik") yang Anda bicarakan, baca bagian "Menggunakan Ikon Aplikasi untuk Navigasi" pada panduan pengembang Bar Tindakan .

Akhirnya, untuk mengubah ikon, panduan juga mencakup itu. Singkatnya, bilah tindakan akan menampilkan gambar yang disediakan di android:iconmanifes applicationatau activityelemen Anda, jika ada. Praktik yang umum adalah membuat ikon aplikasi (di semua berbagai kepadatan yang Anda perlukan) bernama ic_launcher.png, dan letakkan di drawable-*direktori Anda .

CloudyMusic
sumber
0

Saya mendapat non-static method setTitle(CharSequence) cannot be referenced from a static contextkesalahan karena saya digunakan setTitle()di kelas PlaceholderFragment statis. Saya menyelesaikannya dengan menggunakangetActivity().getActionBar().setTitle("new title");

pengguna4757345
sumber
0

Pergi ke manifes di mana aktivitas spesifik yang ingin Anda ubah Bilah tindakan Nama judul dan tulis android: label = "Nama judul"

Abhishek Rajpurohit
sumber
0

Buka file AndroidManifest.xml . Temukan <application>tag Di sana Anda dapat melihat atribut

android:label="@string/app_name"

Sekarang buka res> values> strings.xml

Mengubah

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

untuk

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

Contoh

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>
Kartik Ganiga
sumber
0

Anda juga dapat melakukan hal berikut:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
Naresh Pawar
sumber