Como faço para me livrar do preenchimento extra na nova barra de ferramentas com a API do SDK do Android versão 21 (a biblioteca de suporte)?
Eu estou falando sobre as setas vermelhas nesta imagem:
Aqui está o código que estou usando:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="?attr/colorPrimary"
android:padding="0dp"
android:layout_margin="0dp">
<RelativeLayout
android:id="@+id/action_bar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="0dp"
android:padding="0dp"
android:background="#000000">
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</Toolbar>
Como você pode ver, defini todo o preenchimento relevante como 0, mas ainda há preenchimento no Spinner. O que fiz de errado ou o que preciso fazer para me livrar do preenchimento extra?
Editar Alguns questionaram por que estou tentando fazer isso.
De acordo com as especificações do projeto de material, o botão giratório deve estar a 72dp do lado esquerdo
Preciso neutralizar o preenchimento que o Google colocou lá para colocar corretamente meu botão giratório:
Editar 2
Conforme a resposta de Chris Bane abaixo, defino o contentInsetStart como 0. Para a biblioteca de suporte, você precisará usar o namespace do aplicativo:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="@dimen/action_bar_height"
android:background="?attr/colorPrimary"
android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v4.widget.DrawerLayout>
Espero que isso ajude alguém, fiquei confuso por vários dias.
fonte
contentInsetX
propriedades para 0dp.Respostas:
A inserção esquerda é causada pela barra de ferramentas,
contentInsetStart
que por padrão é 16dp.Altere para 72dp para alinhar com a linha-chave.
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.fonte
contentInsetStartWithNavigation
a 0 fez o truque para mim, com o apoio-v4: 25.0.1A resposta acima está correta, mas ainda há uma coisa que pode criar problemas (pelo menos, isso criou um problema para mim)
Usei o seguinte e ele não funciona corretamente em dispositivos mais antigos -
O truque é aqui, basta usar o seguinte -
e se livrar de -
E agora deve funcionar bem em todos os dispositivos.
Espero que ajude.
fonte
app:contentInsetStartWithNavigation
poder ajudar a corrigir as coisas se já não o suficienteSimpley adiciona essas duas linhas na barra de ferramentas. Em seguida, obtemos o novo espaço esquerdo removido bcoz por padrão, 16dp.
fonte
No caso de alguém tropeçar aqui ... você também pode definir o preenchimento , por exemplo:
Ou contentInset :
fonte
Aqui está o que eu fiz e funciona perfeitamente em todas as versões do Android.
toolbar.xml
MyActivity.java (Para ocultar o título da barra de ferramentas padrão)
Resultado com linhas-chave exibidas
fonte
Faça sua barra de ferramentas como:
Você precisa adicionar
atributo para adicionar espaçamento
siga este link para mais informações - Android Tips
fonte
Uma combinação de
android:padding="0dp"
No xml da barra de ferramentase
mToolbar.setContentInsetsAbsolute(0, 0)
No códigoIsso funcionou para mim.
fonte
isso funciona para mim no meu telefone Android 7.11:
nota: não tive absolutamente nenhum sucesso com padding = 0 ou contentInsetLeft = 0 ou contentInsetStart = 0
fonte
Ok, então se você precisar de 72dp, não poderia simplesmente adicionar a diferença de preenchimento no arquivo xml? Dessa forma, você mantém o Android Inset / Padding padrão que eles querem que usemos.
Então: 72-16 = 56
Para isso: adicione preenchimento de 56dp para se colocar em um total de recuo / margem de 72dp.
Ou você pode simplesmente alterar os valores nos arquivos Dimen.xml. é isso que estou fazendo agora. Ele muda tudo, todo o layout, incluindo a Barra de Ferramentas, quando implementada da nova maneira adequada do Android.
Arquivo de Recurso Dimen
O link que eu adicionei mostra os valores do Dimen em 2dp porque eu mudei, mas era o padrão definido em 16dp. Apenas para sua informação ...
fonte
fonte