Pergunta

Atualmente, ele apenas exibe o nome do aplicativo e eu quero que ele exiba algo personalizado e seja diferente para cada tela no meu aplicativo.

Por exemplo: minha tela inicial pode dizer 'Page1' na barra de ação, enquanto outra atividade para a qual o aplicativo muda poderia ter 'Page2' nessa barra de ação.

Foi útil?

Solução

ATUALIZAÇÃO: Padrão mais recente do ActionBar (título):

PARA SUA INFORMAÇÃO, Barra de ação foi introduzido no nível da API 11. ActionBar é um recurso de janela na parte superior da atividade que pode exibir o Título da atividade, modos de navegação e outros itens interativos, como pesquisa.

Lembro -me exatamente de personalizar a barra de título e torná -la consistente através do aplicativo. Para que eu possa fazer uma comparação com os dias anteriores e listar algumas das vantagens de usar o ActionBar:

  1. Ele oferece aos usuários uma interface familiar entre os aplicativos que o sistema adapta graciosamente para diferentes configurações de tela.
  2. Os desenvolvedores não precisam escrever muito código para exibir o título de atividade, ícones e modos de navegação porque o ActionBar já está pronto com abstração de nível superior.

Por exemplo:

enter image description here

enter image description here

=> Maneira normal,

getActionBar().setTitle("Hello world App");   
getSupportActionBar().setTitle("Hello world App");  // provide compatibility to all the versions

=> Barra de ação de personalização,

Por exemplo:

@Override
public void setActionBar(String heading) {
    // TODO Auto-generated method stub

    com.actionbarsherlock.app.ActionBar actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.title_bar_gray)));
    actionBar.setTitle(heading);
    actionBar.show();

}

Estilizando a barra de ação:

O ActionBar fornece looks básicos e familiares, modos de navegação e outras ações rápidas a serem executadas. Mas isso não significa que parece o mesmo em todos os aplicativos. Você pode personalizá -lo de acordo com a sua interface do usuário e os requisitos de design. Você só precisa definir e escrever estilos e temas.

Leia mais em: Estilizando a barra de ação

E se você quiser gerar estilos para o ActionBar, então este Gerador de estilo A ferramenta pode ajudá -lo.

=================================================================================

Antigo: dias anteriores:

=> Maneira normal,

Você pode alterar o título de cada tela (ou seja, atividade) definindo o seu Android:label

   <activity android:name=".Hello_World"
                  android:label="This is the Hello World Application">
   </activity>

=> Custom - Title - Bar


Mas se você quiser personalizar a barra de título à sua maneira, ou seja, Want to put Image icon and custom-text, então o código a seguir funciona para mim:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

titlebar.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="400dp" 
  android:layout_height="fill_parent"
  android:orientation="horizontal">

<ImageView android:id="@+id/ImageView01" 
            android:layout_width="57dp" 
            android:layout_height="wrap_content"
            android:background="@drawable/icon1"/>

<TextView 

  android:id="@+id/myTitle" 
  android:text="This is my new title" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:textColor="@color/titletextcolor"
   />
</LinearLayout>

Titlebar.java

public class TitleBar extends Activity {

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

strings.xml

O arquivo strings.xml é definido no values pasta.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Set_Text_TitleBar!</string>
    <string name="app_name">Set_Text_TitleBar</string>
    <color name="titlebackgroundcolor">#3232CD</color>
    <color name="titletextcolor">#FFFF00</color>
</resources>

Outras dicas

Você pode definir o rótulo para cada atividade em seu arquivo de manifesto.

Uma definição normal de atividade se parece com a seguinte:

<activity
     android:name=".ui.myactivity"
     android:label="@string/Title Text" />

Onde o texto do título deve ser substituído pelo ID de um recurso de string para esta atividade.

Você também pode definir o texto do título do código se desejar defini -lo dinamicamente.

setTitle(address.getCity());

Com esta linha, o título é definido para a cidade de um endereço específico no método OnCreate da minha atividade.

Você pode definir seu título usando programaticamente setTitle dentro do seu Activity, este método pode aceitar um String ou um ID definido em seu values/strings.xml Arquivo. Exemplo:

public class YourActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        setTitle(R.string.your_title);
        setContentView(R.layout.main);

    }
}

Podemos mudar o título da ActionBar de uma de duas maneiras:

  1. No manifesto: no arquivo manifesto, defina o rótulo de cada atividade.

    android:label="@string/TitleWhichYouWantToDisplay"
    
  2. No código: no código, ligue para o método Settitle () com uma string ou o ID da string como o argumento.

    public class MainActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
    
            setTitle(R.string.TitleWhichYouWantToDisplay);
            // OR You can also use the line below
            // setTitle("MyTitle")
            setContentView(R.layout.activity_main);
    
        }
    }
    

Inside Activity.oCreate () Retorno de chamada ou em outro lugar onde você precisa alterar o título:

getSupportActionBar().setTitle("Whatever title");

tente fazer isso ...

public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
    this.setTitle(String.format(your_format_string, your_personal_text_to_display));
    setContentView(R.layout.your_layout);
       ...
       ...
}

funciona para mim

Um pouco mais velho, mas teve o mesmo problema. Eu fiz assim:

strings.xml

<string name="title_awesome_app">My Awesome App</string>

E certifique -se de definir isso em seu Androidmanifest.xml:

<activity
            ...
            android:label="@string/title_awesome_app" >
            ...
</activity>

É fácil e você não precisa se preocupar com referências nulas e outras coisas.

getActionBar().setTitle("edit your text"); 

A maneira mais fácil de alterar o nome da barra de ação é ir para o AndroidManifest.xml e digitar esse código.

<activity android:name=".MainActivity"
    android:label="Your Label> </activity>

Você apenas adiciona este código no onCreate método.

setTitle("new title");
ActionBar ab = getActionBar();
TextView tv = new TextView(getApplicationContext());

LayoutParams lp = new RelativeLayout.LayoutParams(
        LayoutParams.MATCH_PARENT, // Width of TextView
        LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lp);
tv.setTextColor(Color.RED);
ab.setCustomView(tv);

Para mais informações, verifique este link:

http://android-code.blogspot.in/2015/09/android-how-to-change-actionbar-title_21.html

A melhor maneira de alterar o nome da barra de ação é ir para o androidmanifest.xml e digitar esse código.

<activity android:name=".YourActivity"
        android:label="NameYouWantToDisplay> </activity>

A maneira mais fácil é ligar this.setTitle("...") Se você estiver na atividade. E se você estiver em um fragmento, basta ligar getActivity().setTitle("...");

Dessa forma, permitirá que você mude o título a qualquer momento, sem necessidade de ligar antes setContentView(R.layout.activity_test);

Para futuros desenvolvedores que estão usando Androidx e a Componente arquitetônico de navegação.

Em vez de de definir o título da barra de ferramentas usando uma das soluções acima, o que pode ser muito doloroso Se você deseja defini -lo dinamicamente em uma mudança de pilha traseira, você pode definir um espaço reservado para o título do fragmento no Gráfico de navegação Como o seguinte:

<fragment
    android:id="@+id/some_fragment"
    android:name="package.SomeFragment"
    android:label="Hello {placeholder}"
    tools:layout="@layout/fragment_some">
    <argument
        android:name="placeholder"
        app:argType="string" />
</fragment>

O valor do espaço reservado deve ser fornecido usando o FragmentDirections (através do método de ação).

Então é substituído no título e show como Hello World (quando placeholder = "World").

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top