İşlem çubuğundaki metin nasıl değiştirilir


230

Şu anda sadece uygulamanın adını görüntüler ve ben özel bir şey görüntülemek ve benim app her ekran için farklı olmasını istiyorum.

Örneğin: Ana ekranım işlem çubuğunda 'page1' diyebilir, uygulamanın geçtiği başka bir etkinliğin ise bu ekranlar eylem çubuğunda 'page2' olabilir.

Yanıtlar:


358

Güncelleme: En son ActionBar (Başlık) modeli:

FYI, ActionBar , API Düzey 11'de tanıtıldı. ActionBar, Etkinliğin üst kısmında etkinlik başlığını , gezinme modlarını ve arama gibi diğer etkileşimli öğeleri görüntüleyebilecek bir pencere özelliğidir .

Başlık çubuğunu özelleştirmeyi ve uygulama aracılığıyla tutarlı hale getirmeyi tam olarak hatırlıyorum. Bu yüzden önceki günlerle bir karşılaştırma yapabilir ve ActionBar kullanmanın avantajlarından bazılarını listeleyebilirim:

  1. Kullanıcılarınıza, sistemin farklı ekran yapılandırmaları için zarif bir şekilde uyarladığı uygulamalar arasında tanıdık bir arayüz sunar.
  2. ActionBar zaten üst düzey soyutlamayla hazır olduğu için, geliştiricilerin Etkinlik Başlığını, simgeleri ve gezinme modlarını görüntülemek için fazla kod yazmasına gerek yoktur.

Örneğin:

resim açıklamasını buraya girin

resim açıklamasını buraya girin

=> Normal yol,

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

=> Eylem Çubuğunu Özelleştirme,

Örneğin:

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

}

Eylem Çubuğunu Şekillendirme:

ActionBar, temel ve tanıdık görünümler, gezinme modları ve gerçekleştirilecek diğer hızlı işlemleri sağlar. Ancak bu, her uygulamada aynı göründüğü anlamına gelmez. Kullanıcı arayüzünüze ve tasarım gereksinimlerinize göre özelleştirebilirsiniz. Stilleri ve temaları tanımlamanız ve yazmanız yeterlidir.

Daha fazla bilgi için: Action Bar'ı Şekillendirin

ActionBar için stiller oluşturmak istiyorsanız, bu Stil Oluşturucu aracı size yardımcı olabilir.

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

Eski: Önceki günler:

=> Normal yol,

her bir ekranın Başlığını (yani Etkinlik) Android:label

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

=> Özel - Başlık - çubuk


Ancak başlık çubuğunu kendi yolunuzla Özelleştirmek istiyorsanız, yani Want to put Image icon and custom-text, aşağıdaki kod benim için çalışır:

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

Strings.xml dosyası valuesklasörün altında tanımlanır .

<?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>

2
Android'de bir etkinlik için veya tüm uygulama için global olarak Özel Başlık ayarlamak için bu örneği izleyin: labs.makemachine.net/2010/03/custom-android-window-title
Paresh Mayani 17:10

1
+1! bunun için teşekkürler, ama neden üst doğrusal düzen android: layout_width = "400px", söyleyebilir misiniz?
quinestor

2
@quinestor evet isterseniz "wrap_content" veya "fill_parent" kullanabilirsiniz, bu sadece örneğin.
Paresh Mayani

Javascript için bazı ipuçları?
sarmaşık

1
Ben "dp" gibi bağımsız birimler yerine "px" kullanmaya karşı gitmek istiyorum çünkü yeni öğrencilerin bir sürü sadece kodu kırmak ve en iyi şekilde almaya çalışarak cevap ne daha çok şey öğrenmek.
Akshat Agarwal

107

Manifest dosyanızdaki her etkinlik için etiketi tanımlayabilirsiniz.

Bir etkinliğin normal tanımı şuna benzer:

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

Başlık metninin bu etkinlik için dize kaynağının kimliği ile değiştirilmesi gerektiğinde.

Dinamik olarak ayarlamak istiyorsanız, başlık metnini koddan da ayarlayabilirsiniz.

setTitle(address.getCity());

bu satırla başlık, etkinliğimin oncreate yönteminde belirli bir adresin şehrine ayarlanır.


56

Sen programlama kullanarak başlık tanımlayabilirsiniz setTitleSİZİN içinde Activity, bu yöntem ya bir kabul edebilir Stringsizin tanımlanan veya bir kimlik values/strings.xmldosyası. Misal:

public class YourActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

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

    }
}

19

ActionBar başlığını iki yoldan biriyle değiştirebiliriz:

  1. Manifest'te: bildirim dosyasında, her bir Etkinliğin etiketini ayarlayın.

    android:label="@string/TitleWhichYouWantToDisplay"
  2. Kodda: kodda, argüman olarak setTitle () yöntemini bir String veya String kimliğiyle çağırın.

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

16

Inside Activity.onCreate () geri aramasında veya başlığı değiştirmeniz gereken başka bir yerde:

getSupportActionBar().setTitle("Whatever title");

5

bunu yapmayı dene ...

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

benim için çalışıyor


3

Biraz daha eski ama aynı sorunu vardı. Ben böyle yaptım:

strings.xml

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

ve bunu AndroidManifest.xml dosyasında ayarladığınızdan emin olun :

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

kolaydır ve boş referanslar ve diğer şeyler hakkında endişelenmenize gerek yoktur.



3

İşlem çubuğu adını değiştirmenin en kolay yolu AndroidManifest.xml dosyasına gidip bu kodu yazmaktır.

<activity android:name=".MainActivity"
    android:label="Your Label> </activity>

2

Bu kodu sadece onCreateyönteme ekleyin .

setTitle("new title");


1

İşlem çubuğu adını değiştirmenin en iyi yolu AndroidManifest.xml dosyasına giderek bu kodu yazmaktır.

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

1

Kotlin

Bunu Kotlin'de programlı olarak bu şekilde yapabilirsiniz. Sadece "supportActionBar" null olursa yoksay :

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

Veya bu şekilde. "SupportActionBar" boşsa bir istisna atar.

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

0

En kolay yol, this.setTitle("...")etkinlikteyseniz aramaktır. Eğer bir parçadaysanız, sadece arayın getActivity().setTitle("...");

Bu şekilde başlığı istediğiniz zaman değiştirmenize izin verir, daha önce çağırmanıza gerek yoktur setContentView(R.layout.activity_test);


0

AndroidX ve navigasyon mimari bileşenini kullanan gelecekteki geliştiriciler için .

Bunun yerine olabilir yukarıdaki çözümlerden birini kullanarak araç çubuğu başlığını ayarlama çok acı bir arka yığın değişikliği dinamik olarak ayarlamak isterseniz, bir ayarlayabilirsiniz yer tutucu için başlık içinde parçanın gezinti grafiğinin aşağıdaki gibi:

<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>

Yer tutucu değeri, FragmentDirections (eylem yöntemi aracılığıyla) kullanılarak sağlanmalıdır.

Daha sonra başlıkta değiştirilir ve Hello World(ne zaman placeholder = "World") gibi gösterilir .


0

getSupportActionBar().setTitle("title");


Yalnızca kod yanıtları düşük kaliteli yanıtlardır. Bunun neden işe yaradığına dair biraz açıklama ekleyin.
Taslim Oseni
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.