Android işlem çubuğu başlığını ve simgesini nasıl değiştirebilirim?


225

Android'de ActionBar'da bazı şeyler yapmaya çalışıyorum.

İşlem çubuğunun sağ tarafına zaten yeni öğeler ekledim.

İşlem çubuğunun sol tarafını nasıl değiştirebilirim? Simgeyi ve metni değiştirmek istiyorum ve diğer ekranların işlem çubuğuna "Geri Düğmesi" eklemek istiyorum

Android İşlem Çubuğu

Yanıtlar:


514

Bunu başarmak çok basit

Kodda değiştirmek isterseniz arayın:

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

Ve değerleri istediğiniz gibi ayarlayın.

Veya Android bildirim XML dosyasında:

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

Uygulamanızda geri düğmesini etkinleştirmek için:

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

Kod onCreate/ etiket değişikliği, kullanıcı için şeffaf olacak şekilde kodunuzun içine yerleştirilmelidir , ancak gerçekte etkinliğin yaşam döngüsü boyunca herhangi bir yere çağrılabilir.


23
Eylem çubuğunu eklemek için destek kitaplığını kullanıyorsanız, getSupportActionBaryerine kullanın getActionBar.
Rick Pastoor

3
getActionBar().setHomeButtonEnabled(true)Eski veya daha yeni API'larda yalnızca geri düğmesi işlevselliği istiyorsanız, API seviye 14 veya üstü kullanırgetActionBar().setDisplayHomeAsUpEnabled(true)
Akshat Agarwal 21:13

3
getSupportActionBar (). setDisplayShowTitleEnabled (true); setTitle ("123") öncesi;
Jose Manuel Abarca Rodríguez

GetActionBar (). SetIcon (R.drawable.my_icon) kodunu kullanırsanız; tıklanabilir yapabilir misin?
Skitty

1
@ JoseManuelAbarcaRodríguez Teşekkür ederim, benim için eksik olan buydu. Kotlin'de: supportActionBar?.setDisplayShowTitleEnabled(true)o zaman supportActionBar?.title = "your title". Ve etkinliği oluştururken onResumeiçinde değil, içinde yapılması gerekir . onCreatestartActivity
Eric Aya

18

Tek bir simgenin tüm işlem çubuklarınız tarafından kullanılabilir olmasını sağlamak için bunu Android Manifest'inizde yapabilirsiniz.

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

    ...

</application>

1
teşekkürler- Ben uygulama dışında ("Tüm uygulamalar" görüldüğü gibi) için farklı bir simge ve eylem çubuğunun solunda başka bir simge istedim. Ve bu işe yaradı. Manifest dosyasında hala android var: icon = "@ drawable / ic_launcher"
flobacca

2
Bu pre-loadssimge olduğu için doğru yoldur , programatik olarak ayarlar simgesi yavaştır!
Muhammed Babar

11

Bu 3 kod satırını eklemeniz yeterlidir. Simgeyi kendi simgenizle değiştirin. Oluşturmak istediğiniz takdirde simgeler kullanmak bu

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

11

Android 5.0'da malzeme tasarım yönergeleri, simgenin eylemde kullanılmasını engelliyor

etkinleştirmek için aşağıdaki kodu ekleyin

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

kredi bu makalenin yazarına gidiyor


9

Eylem çubuğu başlığını değiştirmek istiyorsanız, yalnızca Aktivitenizin onCreate () öğesine aşağıdaki 1 satır kodunu verin

getActionBar().setTitle("Test");

Bu başlık değişikliğini nasıl canlandırabilirim?
Srikar Reddy

7

İlgili çekilebilir klasörlerinize istediğiniz simgeyi ekleyip AndroidManifest.xml dosyanızdaki bu satırı değiştirerek simgenizdeki simgeyi değiştirebilirsiniz:

android:icon="@drawable/ic_launcher"

orada simgenizin adı ne olursa olsun. Veya simgenizi aynı simge ise ic_launcher olarak koyun. Söylediklerine gelince, res / valu / strings.xml dosyanıza dizeyle eşleşen dizeleri ekleyin veya değiştirin. Ardından, bir kez daha AndroidManifest.xml dosyanızda bu satırı değiştirin:

android:label="@string/app_name"

ne olursa olsun dize. Bunu bir bütün olarak uygulama için ve istediğiniz aktiviteler için yapmanız gerekecek, ancak çizgiler aynı.

Bu yardımcı olur umarım.


android:iconEtkinlik etiketindeki bu hangi boyutta (dp) olmalıdır ?
cuddlecheek

6
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);

5

Bunun için 2 şekilde yapabilirsiniz: XML veya Java. Buraya bakın: İşlem çubuğundaki metni değiştirme

Yani:

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
Koddan yapmak için setTitle(CharSequence text)veya öğesini aramalısınız setTitle(int titleRes). requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)Başlık çubuğunun tamamını kendi özel Görünümünüzle değiştirmeyi planlamadığınız sürece kullanmayın .
Karakuri

3

Set Başlığı için :

getActionBar().setTitle("Title");

Set Simgesi için :

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

2

İçinde aşağıdaki çağrıyı kullandım onNavigationItemSelected:

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

1

Aşağıdaki kodu etkinliğinizdeki bir onCreate işlevinin içine ekleyin.

setTitle("NewName");

1

Bu iş benim için:

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

0

Eylem çubuğu başlığı varsayılan olarak geçerli etkinliğin etiketini kullanır, ancak bunu program aracılığıyla da ayarlayabilirsiniz ActionBar.setTitle().

Bahsettiğiniz "Geri" (daha doğrusu, "Yukarı") düğme işlevini uygulamak için İşlem Çubuğu geliştirici kılavuzunun "Gezinme için Uygulama Simgesini Kullanma" bölümünü okuyun .

Son olarak, simgeyi değiştirmek için rehber de bunu kapsar. Kısacası, eylem çubuğu varsa android:iconmanifest'inizde applicationveya öğenizde sağlanan görüntüyü gösterecektir activity. Tipik uygulama, adlandırılmış bir uygulama simgesi (ihtiyacınız olan çeşitli yoğunluklarda) oluşturmak ic_launcher.pngve drawable-*dizinlerinize yerleştirmektir.


0

Statik PlaceholderFragment sınıfında non-static method setTitle(CharSequence) cannot be referenced from a static contextkullandığım için hata aldım setTitle(). Kullanarak çözdümgetActivity().getActionBar().setTitle("new title");


0

Eylem çubuğunun Başlık adını değiştirmek ve android yazmak için hangi belirli etkinliği değiştirmek istediğinize gidin: label = "Başlık adı"


0

Git AndroidManifest.xml dosyası. <application>Etiketi bulma Orada bir özellik görebilirsiniz

android:label="@string/app_name"

Şimdi res> değerler> strings.xml adresine gidin

Değiştir

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

için

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

Misal

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

Aşağıdaki gibi de yapabilirsiniz:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
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.