Estou usando uma visualização personalizada da barra de ação e, como você pode ver na captura de tela abaixo, há um espaço cinza em branco na barra de ação. Eu quero removê-lo.
O que eu fiz:
res / valores-v11 / styles.xml
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
res / valores / my_custom_actionbar.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="ActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:height">60dp</item>
</style>
</resources>
Manifesto
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="19" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/AppName"
android:theme="@style/AppBaseTheme" >
<!-- activities... etc -->
</application>
Atividade principal
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
ActionBar actionbar = getSupportActionBar();
actionbar.setDefaultDisplayHomeAsUpEnabled(false);
actionbar.setDisplayHomeAsUpEnabled(false);
actionbar.setDisplayShowCustomEnabled(true);
actionbar.setDisplayShowHomeEnabled(false);
actionbar.setDisplayShowTitleEnabled(false);
actionbar.setDisplayUseLogoEnabled(false);
actionbar.setHomeButtonEnabled(false);
// Add the custom layout
View view = LayoutInflater.from(this).inflate(R.layout.actionbar, null, false);
actionbar.setCustomView(view);
}
Eu encontrei um post recente, que indica que há um problema com a versão mais recente. Também atualizei o ADT e o SDK para o Android 5.
A exibição personalizada do Android ActionBar não está preenchendo o pai
Não sei o que devo fazer.
Editar (solução parcial):
Não está funcionando no Android <= API 10.
O que eu mudei:
Use a versão mais recente do sdk:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="21" />
Adicione um toolbarStyle
:
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ActionBarStyle</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
<item name="android:toolbarStyle">@style/ToolbarStyle</item>
<item name="toolbarStyle">@style/ToolbarStyle</item>
</style>
<style name="ToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
<item name="contentInsetStart">0dp</item>
<item name="android:contentInsetStart">0dp</item>
</style>
android
xml
android-actionbar-compat
Zbarcea Christian
fonte
fonte
Respostas:
Se você estiver adicionando o
Toolbar
via XML, poderá simplesmente adicionar atributos XML para remover inserções de conteúdo.fonte
android.support.v7.widget.Toolbar
:app:contentInsetStartWithNavigation="0dp"
foi suficiente.tente isto:
Eu usei esse código no meu projeto, boa sorte;
fonte
actionBar.setCustomView(R.layout.app_title_bar);
Toolbar parent =(Toolbar) actionBar.getCustomView().getParent();
parent.setContentInsetsAbsolute(0,0);
vez de aumentar o layout.parent.setPadding(0, 0, 0, 0);
para tablets tambémA inserção esquerda é causada pela barra de ferramentas,
contentInsetStart
que por padrão é 16dp.Altere isso para alinhar à linha principal.
Atualização para a biblioteca de suporte v24.0.0:
Para corresponder à especificação do Material Design, há um atributo adicional
contentInsetStartWithNavigation
que, por padrão, é 16dp. Altere isso se você também tiver um ícone de navegação.Verificou-se que isso faz parte de uma nova Especificação de Projeto de Material introduzida na versão 24 da biblioteca de Design.
https://material.google.com/patterns/navigation.html
No entanto, é possível remover o espaço extra adicionando a seguinte propriedade ao widget Barra de Ferramentas.
Antes :
Depois de :
fonte
Encontrei outra resolução (referência appcompat-v7) que altera o toolbarStyle, a seguir código:
fonte
Isso deve ser bom o suficiente.
fonte
Apenas modifique seu styles.xml
fonte
Em vez de adicionar uma barra de ferramentas no layout, você pode definir sua exibição personalizada, como mostrado abaixo.
fonte
Adicione apenas
app:contentInsetStart="0dp"
à barra de ferramentas e remova esse espaço esquerdo.Portanto, sua definição da Barra de Ferramentas se parece com esta
e fica assim
fonte
Usando
AppCompatAcitivty
você pode usar apenasfonte
Você precisa adicionar esta linha app2: contentInsetStart = "0dp" na sua barra de ferramentas
fonte
app:contentInsetStart="0dp"
Não encontrei uma solução para o meu problema (primeira foto) em nenhum lugar, mas finalmente acabei com uma solução mais simples após algumas horas de escavação. Por favor, note que eu tentei com muitos atributos xml como
app:setInsetLeft="0dp"
etc., mas nenhum deles ajudou nesse caso.Imagem 1
o código a seguir resolveu esse problema como na Figura 2
Quadro 2
fonte
Definir atributos "contentInset ..." como 0 na barra de ferramentas não funcionou para mim. A solução de Nilesh Senta para atualizar o estilo funcionou!
styles.xml
java (onCreate)
fonte
Crie barra de ferramentas como esta:
siga este link para mais informações - Android Tips
fonte
apenas adicionando
android:padding="0dp"
trabalho para mimfonte
fonte
Você pode apenas usar o layout relativo dentro do grupo de exibição da barra de ferramentas em seu arquivo xml e ajustar as posições dos widgets conforme necessário para o seu caso de uso. Não há necessidade de criar um layout personalizado, inflá-lo e anexá-lo à barra de ferramentas. Uma vez feito no seu código java, use setContentInsetsAbsolute (0,0) com o objeto da barra de ferramentas antes de defini-lo como barra de ação de suporte no seu layout.
fonte
Seria melhor adicionar um item de plano de fundo ao estilo da barra de ação do aplicativo para consistir com a cor de plano de fundo da barra de ação personalizada:
Após o Android 6.0, a barra de ação ainda possui um espaço de margem direita e não pode ser configurada. Adicione uma margem direita ajustando-se à atividade como esta: (a visualização é a barra de ação personalizada ou um botão direito)
O machenismo da barra de ação é suportado apenas após o aplicativo Android 3.0+. Se usarmos uma barra de ferramentas (da suporte lib v7), devemos colocá-la em cada xml de cada atividade e cuidar da questão da sobreposição com a barra de status do sistema no dispositivo Android 5.0 ou posterior.
fonte
Kotlin
fonte
esse trabalho pra mim
fonte
Se você verificar a documentação da barra de ferramentas, por padrão, ela tem estilo definido e existe um item contentInsetStart.
Se você deseja substituir esse preenchimento, isso pode ser feito de duas maneiras.
1. Substitua o estilo e adicione seu próprio estilo com os valores contentInsetStart e contentInsetEnd
2.Em XML, você pode definir diretamente os valores contentInsetStart e contentInsetEnd
fonte
Seu aplicativo suporta o Android 5? Se não houver suporte, você poderá fazer o downgrade da versão do support actionbar v7. É parecido com:
também torna a versão de destino do aplicativo menor que 21.
Se o seu aplicativo suportar o Android 5 ->, você precisará da Barra de Ferramentas personalizada. (Porque o appcombat-v7: 21 tem alguma mudança).
fonte