Jak zmienić tytuł i ikonę paska akcji Androida

225

Próbuję wykonać pewne czynności na pasku ActionBar w systemie Android.

Dodałem już nowe przedmioty po prawej stronie paska akcji.

Jak mogę zmienić lewą stronę paska akcji? Chcę zmienić ikonę i tekst, a także dodać „przycisk Wstecz” na pasku akcji dla innych ekranów

Pasek akcji systemu Android

Allan Ramírez
źródło

Odpowiedzi:

514

Jest to bardzo proste do osiągnięcia

Jeśli chcesz to zmienić w kodzie, zadzwoń:

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

I ustaw wartości na cokolwiek zechcesz.

Lub w pliku XML manifestu Androida:

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

Aby włączyć przycisk Wstecz w swojej aplikacji, użyj:

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

Cały kod powinien zostać umieszczony w tobie, onCreateaby zmiana etykiety / ikony była przejrzysta dla użytkownika, ale w rzeczywistości można go wywołać w dowolnym miejscu podczas cyklu życia działania.

dymmeh
źródło
23
Jeśli używasz biblioteki wsparcia, aby dodać pasek akcji, użyj getSupportActionBarzamiast getActionBar.
Rick Pastoor
3
getActionBar().setHomeButtonEnabled(true)używa interfejsu API w wersji 14 lub getActionBar().setDisplayHomeAsUpEnabled(true)
wyższej
3
getSupportActionBar (). setDisplayShowTitleEnabled (true); przed setTitle („123”);
Jose Manuel Abarca Rodríguez
Jeśli użyjesz kodu getActionBar (). SetIcon (R.drawable.my_icon); czy możesz to kliknąć?
Skitty
1
@ JoseManuelAbarcaRodríguez Dziękuję, tego mi brakowało. W Kotlinie: supportActionBar?.setDisplayShowTitleEnabled(true)wtedy supportActionBar?.title = "your title". I należy to zrobić przy tworzeniu działania za pomocą onResume, a nie onCreatewewnątrz startActivity.
Eric Aya
18

Aby wszystkie ikony pasków były dostępne dla jednej ikony, możesz to zrobić w Manifeście na Androida.

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

    ...

</application>
Akshat Agarwal
źródło
1
dzięki - chciałem innej ikony na zewnątrz aplikacji (jak widać w „Wszystkie aplikacje”) i innej ikony po lewej stronie paska akcji. I to zadziałało. Plik manifestu nadal ma Androida: icon = "@ drawable / ic_launcher"
flobacca
2
Jest to właściwy sposób, ponieważ pre-loadsikona, programowo ikona ustawień jest powolna!
Muhammad Babar
11

Musisz tylko dodać te 3 wiersze kodu. Zastąp ikonę własną ikoną. Jeśli chcesz wygenerować ikony, użyj tego

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
Sagar Devanga
źródło
11

W Androidzie 5.0 wytyczne dotyczące projektowania materiałów odradzają używanie ikony w pasku akcji

aby go włączyć, dodaj następujący kod

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

podziękowania należą się autorowi tego artykułu

Azzy
źródło
9

Jeśli chcesz zmienić tytuł paska akcji, podaj następujący 1-liniowy kod w polu onCreate () swojej aktywności

getActionBar().setTitle("Test");
Jabbir Basha
źródło
Jak mogę animować tę zmianę tytułu?
Srikar Reddy
7

Możesz zmienić ikonę w swoim, dodając dowolną ikonę do odpowiednich folderów do rysowania, a następnie zmieniając tę ​​linię w pliku AndroidManifest.xml:

android:icon="@drawable/ic_launcher"

aby dopasować dowolną nazwę twojej ikony. Lub umieść swoją ikonę jako ic_launcher, jeśli jest to ta sama ikona. Jeśli chodzi o to, co mówi, dodaj lub zmień dowolne ciągi, które pasują do tego w pliku res / wartości / strings.xml. Następnie ponownie w pliku AndroidManifest.xml zmień ten wiersz:

android:label="@string/app_name"

na dowolny ciąg, który masz w nich. Będziesz musiał to zrobić dla całej aplikacji i dowolnych czynności, które chcesz, ale linie są takie same.

Mam nadzieję że to pomoże.

RobStemen
źródło
Jaki rozmiar (dp) powinien mieć ten android:iconznacznik aktywności?
cuddlecheek 28.04.16
6
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);
Alessandro Caliaro
źródło
5

W tym celu możesz to zrobić na 2 sposoby: XML lub Java. Zobacz tutaj: jak zmienić tekst na pasku akcji

Więc:

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š
źródło
2
Aby to zrobić z kodu, należy zadzwonić setTitle(CharSequence text)lub setTitle(int titleRes). Nie używaj, requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)chyba że planujesz zastąpić cały pasek tytułu własnym niestandardowym widokiem.
Karakuri
3

Dla zestawu Tytuł :

getActionBar().setTitle("Title");

Dla zestawu Ikona :

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);
Bhaumik Sathvara
źródło
2

Wewnątrz użyłem następującego połączenia onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());
AmandaHLA
źródło
1

Dodaj poniższy kod do funkcji onCreate w swojej działalności.

setTitle("NewName");
Chandrahasa Rai
źródło
1

Ta praca dla mnie:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);
Ram Chhabra
źródło
0

Tytuł paska akcji będzie domyślnie używał etykiety bieżącej aktywności, ale można ją także ustawić programowo ActionBar.setTitle().

Aby wdrożyć funkcjonalność przycisku „Wstecz” (a dokładniej „W górę”), o którym mówisz, przeczytaj sekcję „Korzystanie z ikony aplikacji do nawigacji” w przewodniku dla programistów paska akcji .

Wreszcie, aby zmienić ikonę, przewodnik również to obejmuje. Krótko mówiąc, pasek akcji wyświetli obraz dostarczony w android:iconmanifeście applicationlub activityelemencie, jeśli taki istnieje. Typową praktyką jest utworzenie nazwy aplikacji (we wszystkich różnych gęstościach, których potrzebujesz) o nazwie ic_launcher.pngi umieszczenie jej w swoich drawable-*katalogach.

CloudyMusic
źródło
0

Wystąpił non-static method setTitle(CharSequence) cannot be referenced from a static contextbłąd, ponieważ użyłem setTitle()w statycznej klasie PlaceholderFragment. Rozwiązałem to za pomocągetActivity().getActionBar().setTitle("new title");

użytkownik4757345
źródło
0

Przejdź do manifestu, w którym konkretną czynność chcesz zmienić Pasek akcji Nazwa tytułu i napisz android: label = "Nazwa tytułu"

Abhishek Rajpurohit
źródło
0

Przejdź do pliku AndroidManifest.xml . Znajdź <application>tag Tam możesz zobaczyć atrybut

android:label="@string/app_name"

Teraz przejdź do res> wartości> strings.xml

Zmienić

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

do

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

Przykład

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
źródło
0

Możesz także wykonać następujące czynności:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
Naresh Pawar
źródło