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

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.


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>

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

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


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

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.


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

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

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

2

Eu usei a seguinte chamada dentro onNavigationItemSelected:

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

1

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

setTitle("NewName");

1

Este trabalho para mim:

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

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.


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


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"


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>

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")
    }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.