Na forma mais básica, a barra de ações mostra o título da atividade em um lado e um menu flutuante no outro. Mesmo nesse formato básico, a barra do app oferece informações úteis para os usuários e dá aos apps Android uma aparência consistente.
Todas as atividades que usam o tema padrão têm uma
ActionBar
como barra
de apps. Os recursos da barra de apps foram adicionados ao ActionBar
nativo em várias
versões do Android. Como resultado, a ActionBar
nativa se comporta de forma diferente
dependendo da versão do Android usada pelo dispositivo.
Por outro lado, os recursos são adicionados à versão da biblioteca AndroidX AppCompat de
Toolbar
,
o que significa que esses recursos estão disponíveis em dispositivos que usam as bibliotecas do AndroidX.
Por esse motivo, use a classe Toolbar
da biblioteca do AndroidX para implementar as barras de apps
das suas atividades. O uso da barra de ferramentas da biblioteca do AndroidX torna o comportamento do
app consistente no conjunto mais amplo de dispositivos.
Adicionar uma barra de ferramentas a uma atividade
Estas etapas descrevem como configurar umaToolbar
como a barra de apps da sua atividade:
- Adicione a biblioteca AndroidX ao seu projeto, conforme descrito em Visão geral do AndroidX.
- Certifique-se de que a atividade estenda
AppCompatActivity
:Kotlin
class MyActivity : AppCompatActivity() { // ... }
Java
public class MyActivity extends AppCompatActivity { // ... }
- No manifesto do app, configure o
elemento
<application>
para usar um dos temasNoActionBar
do AppCompat, conforme mostrado no exemplo a seguir. O uso de um desses temas impede que o aplicativo use a classeActionBar
nativa para fornecer a barra de apps.<application android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
- Adicione uma
Toolbar
ao layout da atividade. Por exemplo, o código de layout a seguir adiciona umaToolbar
e faz com que ela pareça flutuar acima da atividade:<androidx.appcompat.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
Consulte a especificação do Material Design para recomendações sobre a elevação da barra do app.
Posicione a barra de ferramentas na parte de cima do layout da atividade, porque você a usará como uma barra de apps.
- No método
onCreate()
da atividade, chame o métodosetSupportActionBar()
da atividade e transmita a barra de ferramentas dela, conforme mostrado no exemplo a seguir. Esse método define a barra de ferramentas como a barra de apps para a atividade.Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_my) // The Toolbar defined in the layout has the id "my_toolbar". setSupportActionBar(findViewById(R.id.my_toolbar)) }
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); }
Seu app agora tem uma barra de ações básica. Por padrão, a barra de ações contém o nome do app e um menu flutuante, que inicialmente contém o item Configurações. É possível adicionar mais ações à barra de ações e ao menu flutuante, conforme descrito em Adicionar e processar ações.
Usar métodos utilitários da barra de apps
Depois de definir a barra de ferramentas como a barra de apps de uma atividade, você terá acesso aos métodos
utilitários fornecidos pela classe
ActionBar
da biblioteca do AndroidX. Essa abordagem permite que você realize várias atividades úteis, como ocultar e mostrar a barra de apps.
Para usar os métodos utilitários ActionBar
, chame o método
getSupportActionBar()
da atividade. Esse método retorna uma referência a um objeto ActionBar
AppCompat.
Quando você tiver essa referência, poderá chamar qualquer um dos métodos da ActionBar
para ajustar a barra de apps. Por exemplo, para ocultar a barra de apps, chame
ActionBar.hide()
.