Cara mengubah teks pada bilah tindakan

230

Saat ini hanya menampilkan nama aplikasi dan saya ingin menampilkan sesuatu yang khusus dan berbeda untuk setiap layar di aplikasi saya.

Misalnya: layar beranda saya bisa mengatakan 'page1' di bilah tindakan sementara aktivitas lain yang dialihkan oleh aplikasi dapat memiliki 'page2' di bilah tindakan layar itu.

dootcher
sumber

Jawaban:

358

Pembaruan: Pola ActionBar (Judul) Terbaru:

FYI, ActionBar diperkenalkan di API Level 11. ActionBar adalah fitur jendela di bagian atas Kegiatan yang dapat menampilkan judul aktivitas , mode navigasi, dan item interaktif lainnya seperti pencarian.

Saya ingat persis tentang mengkustomisasi bilah judul dan membuatnya konsisten melalui aplikasi. Jadi saya bisa membuat perbandingan dengan hari-hari sebelumnya dan dapat membuat daftar beberapa keuntungan menggunakan ActionBar:

  1. Ini menawarkan pengguna Anda antarmuka yang akrab di seluruh aplikasi yang sistem anggun beradaptasi untuk berbagai konfigurasi layar.
  2. Pengembang tidak perlu menulis banyak kode untuk menampilkan Judul Aktivitas, ikon dan mode navigasi karena ActionBar sudah siap dengan abstraksi tingkat atas.

Sebagai contoh:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

=> Cara normal,

getActionBar().setTitle("Hello world App");   
getSupportActionBar().setTitle("Hello world App");  // provide compatibility to all the versions

=> Kustomisasi Action Bar,

Sebagai contoh:

@Override
public void setActionBar(String heading) {
    // TODO Auto-generated method stub

    com.actionbarsherlock.app.ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.title_bar_gray)));
    actionBar.setTitle(heading);
    actionBar.show();

}

Styling the Action Bar:

ActionBar memberi Anda tampilan dasar dan akrab, mode navigasi, dan tindakan cepat lainnya untuk dilakukan. Tapi itu tidak berarti itu terlihat sama di setiap aplikasi. Anda dapat menyesuaikannya sesuai UI dan persyaratan desain Anda. Anda hanya perlu mendefinisikan dan menulis gaya dan tema.

Baca lebih lanjut di: Styling the Action Bar

Dan jika Anda ingin menghasilkan gaya untuk ActionBar maka alat Generator Gaya ini dapat membantu Anda.

================================================== ===============================

Lama: Hari-hari sebelumnya:

=> Cara normal,

Anda dapat Mengubah Judul setiap layar (yaitu Aktivitas) dengan mengaturnya Android:label

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

=> Kustom - Judul - bar


Tetapi jika Anda ingin Menyesuaikan bilah judul dengan cara Anda sendiri, yaitu Want to put Image icon and custom-text, maka kode berikut ini berfungsi untuk saya:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

titlebar.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="400dp" 
  android:layout_height="fill_parent"
  android:orientation="horizontal">

<ImageView android:id="@+id/ImageView01" 
            android:layout_width="57dp" 
            android:layout_height="wrap_content"
            android:background="@drawable/icon1"/>

<TextView 

  android:id="@+id/myTitle" 
  android:text="This is my new title" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:textColor="@color/titletextcolor"
   />
</LinearLayout>

TitleBar.java

public class TitleBar extends Activity {

    @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);
        }
    }
}

strings.xml

File strings.xml didefinisikan di bawah valuesfolder.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Set_Text_TitleBar!</string>
    <string name="app_name">Set_Text_TitleBar</string>
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>
Paresh Mayani
sumber
2
Ikuti contoh ini untuk mengatur Judul Kustom di android untuk suatu kegiatan atau global untuk seluruh aplikasi: labs.makemachine.net/2010/03/custom-android-window-title
Paresh Mayani
1
+1! terima kasih untuk ini, tetapi dapatkah Anda memberi tahu mengapa android: layout_width = "400px", dengan tata letak linear induk?
quinestor
2
@quinestor ya Anda dapat menggunakan "wrap_content" atau "fill_parent" jika Anda mau, ini hanya sebagai contoh.
Paresh Mayani
Beberapa petunjuk untuk javascript?
ivy
1
Saya akan menentang menggunakan "px" daripada unit independen seperti "dp" karena banyak pelajar baru belajar lebih banyak dari apa yang dijawab dengan mencoba memecah kode dan mendapatkan hasil maksimal dari itu.
Akshat Agarwal
107

Anda dapat menentukan label untuk setiap aktivitas dalam file manifes Anda.

Definisi normal dari suatu kegiatan terlihat seperti ini:

<activity
     android:name=".ui.myactivity"
     android:label="@string/Title Text" />

Di mana teks judul harus diganti dengan id sumber daya string untuk aktivitas ini.

Anda juga dapat mengatur teks judul dari kode jika Anda ingin mengaturnya secara dinamis.

setTitle(address.getCity());

dengan baris ini judulnya diatur ke kota alamat tertentu dalam metode aktivitas saya.

Janusz
sumber
56

Anda dapat menentukan judul Anda secara terprogram menggunakan setTitledalam Anda Activity, metode ini dapat menerima salah satu Stringatau ID yang ditentukan dalam values/strings.xmlfile Anda . Contoh:

public class YourActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        setTitle(R.string.your_title);
        setContentView(R.layout.main);

    }
}
pelanggar
sumber
19

Kami dapat mengubah judul ActionBar dalam satu dari dua cara:

  1. Di Manifest: di file manifes, tetapkan label masing-masing Aktivitas.

    android:label="@string/TitleWhichYouWantToDisplay"
  2. Dalam kode: dalam kode, panggil metode setTitle () dengan sebuah String atau id dari String sebagai argumen.

    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            setTitle(R.string.TitleWhichYouWantToDisplay);
            // OR You can also use the line below
            // setTitle("MyTitle")
            setContentView(R.layout.activity_main);
    
        }
    }
    
Radheshyam Singh
sumber
16

Di dalam Activity.onCreate () panggilan balik atau di tempat lain di mana Anda perlu mengubah judul:

getSupportActionBar().setTitle("Whatever title");
Andrey
sumber
5

coba lakukan ini ...

public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
    this.setTitle(String.format(your_format_string, your_personal_text_to_display));
    setContentView(R.layout.your_layout);
       ...
       ...
}

ini bekerja untuk saya

nonickh
sumber
3

Sedikit lebih tua tetapi memiliki masalah yang sama. Saya melakukannya seperti ini:

strings.xml

<string name="title_awesome_app">My Awesome App</string>

dan pastikan Anda mengatur ini di AndroidManifest.xml Anda :

<activity
            ...
            android:label="@string/title_awesome_app" >
            ...
</activity>

itu mudah dan Anda tidak perlu khawatir tentang referensi-nol dan hal-hal lain.

Jutaan
sumber
3
getActionBar().setTitle("edit your text"); 
Habibur Rahman Ovie
sumber
3

Cara termudah untuk mengubah nama bilah tindakan adalah dengan membuka AndroidManifest.xml dan ketik kode ini.

<activity android:name=".MainActivity"
    android:label="Your Label> </activity>
Mallikarjun Dodmani
sumber
2

Anda cukup menambahkan kode ini dalam onCreatemetode ini.

setTitle("new title");
NEC
sumber
1
ActionBar ab = getActionBar();
TextView tv = new TextView(getApplicationContext());

LayoutParams lp = new RelativeLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, // Width of TextView
        LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setTextColor(Color.RED);
ab.setCustomView(tv);

Untuk informasi lebih lanjut, periksa tautan ini:

http://android--code.blogspot.in/2015/09/android-how-to-change-actionbar-title_21.html

Bhaumik Sathvara
sumber
Anda dapat menggunakan getSupportActionBar () jika Anda menggunakan AppCompatActivity
Hamid Vakilian
1

Cara terbaik untuk mengubah nama bilah tindakan adalah dengan masuk ke AndroidManifest.xml dan ketik kode ini.

<activity android:name=".YourActivity"
        android:label="NameYouWantToDisplay> </activity>
Parichay21
sumber
1

Kotlin

Anda dapat melakukannya secara terprogram di Kotlin dengan cara ini. Anda abaikan saja jika "supportActionBar" adalah nol :

    supportActionBar?.setTitle(R.string.my_text)
    supportActionBar?.title = "My text"

Atau dengan cara ini. Itu melempar pengecualian jika "supportActionBar" adalah nol.

    supportActionBar!!.setTitle(R.string.my_text)
    supportActionBar!!.title = "My text"
Mateus Melo
sumber
0

Cara termudah adalah menelepon this.setTitle("...")jika Anda sedang beraktifitas. Dan jika Anda berada dalam sebuah fragmen, panggil saja getActivity().setTitle("...");

Dengan cara ini Anda dapat mengubah judul kapan saja, tidak perlu menyebutnya sebelumnya setContentView(R.layout.activity_test);

Hatim
sumber
0

Untuk pengembang masa depan yang menggunakan AndroidX dan komponen arsitektur navigasi .

Alih - alih mengatur judul bilah alat menggunakan salah satu solusi di atas, yang bisa sangat menyakitkan jika Anda ingin mengaturnya secara dinamis pada perubahan tumpukan belakang, Anda dapat mengatur placeholder untuk judul fragmen dalam grafik navigasi seperti berikut:

<fragment
    android:id="@+id/some_fragment"
    android:name="package.SomeFragment"
    android:label="Hello {placeholder}"
    tools:layout="@layout/fragment_some">
    <argument
        android:name="placeholder"
        app:argType="string" />
</fragment>

Nilai placeholder harus disediakan menggunakan FragmentDirections(melalui metode tindakan).

Ini kemudian diganti dalam judul dan tampilkan seperti Hello World(kapan placeholder = "World").

Fabian Damken
sumber
0

getSupportActionBar().setTitle("title");

Phani varma
sumber
Jawaban khusus kode adalah jawaban berkualitas rendah. Tambahkan beberapa penjelasan mengapa ini berhasil.
Taslim Oseni