Como alterar o texto na barra de ação
-
27-09-2019 - |
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.
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:
- Ele oferece aos usuários uma interface familiar entre os aplicativos que o sistema adapta graciosamente para diferentes configurações de tela.
- 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:
=> 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:
No manifesto: no arquivo manifesto, defina o rótulo de cada atividade.
android:label="@string/TitleWhichYouWantToDisplay"
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"
).