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

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.


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>

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

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


9

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

getActionBar().setTitle("Test");

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.


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

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

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

2

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

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


1

Ta praca dla mnie:

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

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.


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


0

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


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>

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")
    }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.