Como altero o título e o ícone da barra de ação do Android

225

Estou tentando fazer algumas coisas na ActionBar no Android.

Eu já adicionei novos itens no lado direito da barra de ação.

Como posso alterar o lado esquerdo da barra de ação? Quero alterar o ícone e o texto e adicionar um "Botão Voltar" na barra de ação para as outras telas

Barra de ação do Android

Allan Ramírez
fonte

Respostas:

514

Isso é muito simples de realizar

Se você quiser alterá-lo no código, ligue para:

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

E defina os valores para o que quiser.

Ou, no arquivo XML do manifesto do Android:

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

Para ativar o botão Voltar no seu aplicativo, use:

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

O código deve ser todo inserido no seu, onCreatepara que a alteração do rótulo / ícone seja transparente para o usuário, mas, na realidade, pode ser chamada em qualquer lugar durante o ciclo de vida da atividade.

dymmeh
fonte
23
Se você estiver usando a biblioteca de suporte para adicionar a barra de ação, use em getSupportActionBarvez de getActionBar.
21813 Rick Starring
3
getActionBar().setHomeButtonEnabled(true)usa o nível de API 14 ou até, se você quiser apenas a funcionalidade do botão de volta em mais velho, bem como APIs mais recentes você só precisagetActionBar().setDisplayHomeAsUpEnabled(true)
Akshat Agarwal
3
getSupportActionBar (). setDisplayShowTitleEnabled (true); antes de setTitle ("123");
Jose Manuel Abarca Rodríguez
Se você usar o código getActionBar (). SetIcon (R.drawable.my_icon); você pode torná-lo clicável?
Skitty
1
@ JoseManuelAbarcaRodríguez Obrigado, é o que estava faltando para mim. Em Kotlin: supportActionBar?.setDisplayShowTitleEnabled(true)então supportActionBar?.title = "your title". E isso deve ser feito dentro onResume, não dentro onCreate, ao criar a atividade com startActivity.
Eric Aya
18

Para tornar um único ícone utilizável por todas as suas barras de ação, você pode fazer isso no seu manifesto do Android.

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

    ...

</application>
Akshat Agarwal
fonte
1
obrigado- Eu queria um ícone diferente para fora do aplicativo (como visto em "Todos os aplicativos") e outro ícone à esquerda da barra de ação. E isso funcionou. Arquivo de manifesto ainda tem android: icon = "@ drawable / ic_launcher"
flobacca
2
Este é o caminho certo, pois pre-loadso ícone programaticamente é lento!
Muhammad Babar
11

Você só precisa adicionar essas 3 linhas de código. Substitua o ícone pelo seu próprio ícone. Se você deseja gerar ícones, use este

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
Sagar Devanga
fonte
11

Nas diretrizes de design de material do Android 5.0, desencorajar o uso de ícone na actionBar

para habilitá-lo, adicione o seguinte código

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

crédito vai para o autor deste artigo

Azzy
fonte
9

Se você deseja alterar o título da barra de ação, basta fornecer o seguinte código de 1 linha no onCreate () da sua atividade

getActionBar().setTitle("Test");
Jabbir Basha
fonte
Como posso animar essa alteração de título?
Srikar Reddy
7

Você pode alterar o ícone adicionando qualquer ícone às suas respectivas pastas desenháveis ​​e alterando esta linha no seu arquivo AndroidManifest.xml:

android:icon="@drawable/ic_launcher"

para corresponder ao nome do seu ícone. Ou coloque seu ícone como ic_launcher, se eles forem o mesmo ícone. Quanto ao que diz, adicione ou altere as strings correspondentes às do seu arquivo res / values ​​/ strings.xml. Em seguida, novamente no seu arquivo AndroidManifest.xml, altere esta linha:

android:label="@string/app_name"

para qualquer que seja a string que você tem na deles. Você precisará fazer isso para o aplicativo como um todo e para as atividades que desejar, mas as linhas são as mesmas.

Espero que isto ajude.

RobStemen
fonte
Qual é o tamanho (dp) android:iconna tag de atividade?
Cevdlecheek
6
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);
Alessandro Caliaro
fonte
5

Para isso, você pode fazer isso de duas maneiras: XML ou Java. Veja aqui: Como alterar o texto na barra de ação

Assim:

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);
       }
 }
}
Miloš
fonte
2
Para fazer isso a partir do código, você deve chamar setTitle(CharSequence text)ou setTitle(int titleRes). Não use a requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)menos que esteja planejando substituir a barra de título inteira por sua própria exibição personalizada.
Karakuri
3

Para o título definido :

getActionBar().setTitle("Title");

Para definir o ícone :

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);
Bhaumik Sathvara
fonte
2

Eu usei a seguinte chamada dentro onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());
AmandaHLA
fonte
1

Adicione o código abaixo dentro de uma função onCreate em sua atividade.

setTitle("NewName");
Chandrahasa Rai
fonte
1

Este trabalho para mim:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);
Ram Chhabra
fonte
0

O título da barra de ação, por padrão, usa o rótulo da atividade atual, mas você também pode configurá-lo através de programação ActionBar.setTitle().

Para implementar a funcionalidade do botão "Voltar" (mais precisamente, "Para cima") de que você está falando, leia a seção "Usando o ícone do aplicativo para navegação" no guia do desenvolvedor da Barra de ação .

Por fim, para alterar o ícone, o guia também o cobre. Em resumo, a barra de ação exibirá a imagem fornecida no android:iconmanifesto applicationou activityelemento, se houver algum. A prática típica é criar um ícone de aplicativo (em todas as várias densidades necessárias) nomeado ic_launcher.pnge colocá-lo em seus drawable-*diretórios.

CloudyMusic
fonte
0

Recebi um non-static method setTitle(CharSequence) cannot be referenced from a static contexterro porque usei setTitle()na classe estática PlaceholderFragment. Eu resolvi usandogetActivity().getActionBar().setTitle("new title");

user4757345
fonte
0

Vá para o manifesto em qual atividade específica deseja alterar Barra de ação Nome do título e escreva android: label = "Title name"

Abhishek Rajpurohit
fonte
0

Vá para o arquivo AndroidManifest.xml . Encontre a <application>tag Lá você pode ver um atributo

android:label="@string/app_name"

Agora vá para res> values> strings.xml

Mudar o

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

para

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

Exemplo

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

Você também pode fazer o seguinte:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
Naresh Pawar
fonte