Então, acabei de atualizar minha base de código para o Lollipop e estou tendo problemas com a barra de ação. Estou usando AppCompat e ActionBarActivity e aumentando uma visualização personalizada. Parece que a visualização personalizada não ocupa mais toda a largura da tela, deixando uma faixa fina à esquerda
Como costumava ser
Como está agora
Este é o código que estou usando para configurar a barra de ação. Alguém tem alguma ideia?
final ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setCustomView(R.layout.action_bar_content_search_custom_view);
actionBar.setBackgroundDrawable(null);
// actionBar.setStackedBackgroundDrawable(null);
TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
title.setText(R.string.youtube);
ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
Editar
Tirar a visualização personalizada e alterar o plano de fundo agora ocupa toda a largura. Portanto, a questão é: como podemos fazer um CustomView ocupar toda a largura da ActionBar?
android
android-actionbar
android-appcompat
android-5.0-lollipop
Stevie Kideckel
fonte
fonte
appcompat-v7
.ImageView
. Experimente desativá-lo para começar.Respostas:
Parece que isso é causado pelas alterações mais recentes
ActionBar
no naappcompat-v7
atualização recente . Parece que há mudanças significativas em como você deve lidar com as barras de ação.Enfrentei o mesmo problema e depois de ler a
ActionBar
documentação , e principalmente a seguinte citação, encontrei uma solução.A meu ver, os
AppCompat
temas foram alterados e por um lado pareciam quebrar algumas coisas, mas fornecer muito mais flexibilidade por outro. Eu recomendo seguir estas etapas:.NoActionBar
estilo em sua atividade conforme descrito na citação acimaandroid.support.v7.widget.Toolbar
ao seu layout de atividadeapp:contentInsetStart="0dp"
atributo. Este é o principal problema com a margem que você descreve em sua perguntaNormalmente é recomendado que você faça isso em um arquivo de layout separado e use
include
em seu layout de atividade, então você só precisará personalizar a barra de ferramentas em um lugar se for usada em várias atividadesfindViewById
esetSupportActionBar
em sua atividadeonCreate
parasignal to the Activity which Toolbar should be treated as the Activity's action bar
onCreateOptionsMenu
serão adicionadas à barra de ferramentas e serão tratadas como a barra de ação da atividade.fonte
Error inflating class fragment
xmlns:app="http://schemas.android.com/apk/res-auto"
setCustomView
. Basta construir um arquivo de layout com os widgets que você deseja incluir em sua barra de ferramentas (por exemplo, adicionar visualizações filhas ao arquivo de layout descrito na seção 3 da resposta)Em vez de fazer tanto trabalho como mencionado por Muzikant e gostar desta resposta
Você precisa adicionar apenas as duas últimas linhas de código para resolver seu problema.
Espero que isso possa ajudar você e qualquer outra pessoa.
Adicione essas quatro linhas ao código acima, de modo que a lacuna do lado direito também seja removida da barra de ação de suporte.
fonte
Acho que você também pode fazer isso em estilos. tente isso. testei no kitkat
fonte
Nenhuma das outras respostas funcionou para mim, então dei uma olhada nos estilos reais do AppCompat v7, encontrados aqui .
Se você olhar o estilo Base.Widget.AppCompat.ActionBar, ele tem:
Então, obviamente, só precisamos substituir essas propriedades em nosso próprio estilo de barra de ação:
Isso funcionou muito bem para mim, espero que ajude outras pessoas também.
fonte
Depois de muito bater minha cabeça contra o monitor, isso funcionou para mim
GetCustomView (). GetParent () é o que funcionou
fonte
Eu também encontrei esse problema hoje, então descobri que estava
res/values-v21/styles.xml
dentro do meu projeto que foi gerado automaticamente pelo Android Studio e essa é a causa.Por quê?
Porque
res/values-v21/styles.xml
o conteúdo do meu era:E meu
res/values/styles.xml
continha algo como:Então, quando eu executei meu aplicativo no Lollipop, o
res/values-v21/styles.xml
foi usado, e isso causou exatamente o problema que o OP tinha. Então, cheguei a uma solução simples: apenas excluir:no
res/values-v21/styles.xml
fonte
ao ponto:
certifique-se de importar a barra de ferramentas certa -
android.support.v7.widget.Toolbar;
fonte
Escreva essas duas linhas além do seu código
fonte