No meu aplicativo para Android, tenho este layout:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
class="com.google.android.gms.maps.SupportMapFragment"/>
<Button
android:id="@+id/button_back"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="CloseActivity"
android:padding="0dp"
android:text="@+string/back" />
</LinearLayout>
Na visualização e no telefone, parece com:
Como você pode ver no botão na área inferior, há algum preenchimento lá.
Como posso me livrar disso e deixar o botão preencher completamente a área inferior?
Respostas:
Para mim, o problema acabou sendo minHeight e minWidth em alguns dos temas do Android.
No elemento Button, adicione:
Ou no estilo do seu botão:
fonte
Button
ainda estava ocupando tanto espaço, mesmo depois de configurá-loandroid:background="@null"
. O fato de que oButton
estilo padrão do responsável é responsável é uma dica muito boa.Minha solução foi definida como 0 nas propriedades insetTop e insetBottom.
fonte
Isso não é preenchimento, é a sombra ao redor do botão em seu plano de fundo desenhável. Crie seu próprio plano de fundo e ele desaparecerá.
fonte
Uma solução alternativa pode ser tentar usar
-ve
valores para margens como a seguir:Isso fará com que esse espaço desapareça. Quero dizer, você pode escolher o
dip
valor apropriado , o que faz com que ele desapareça. Funcionou para mim. Espero que funcione para você.fonte
Para remover o preenchimento ao redor do botão de alternância, precisamos definir minWidth e minHeight 0dp.
android:minWidth="0dp" android:minHeight="0dp"
defina seu arquivo drawable como atributo de botão como:
android:button="@drawable/toggle_selector"
Abaixo está o meu
toggle_selecter.xml
arquivofonte
Eu sou novo no android, mas tive uma situação semelhante. Fiz o que @Delyan sugeriu e também usei android: background = "@ null" no arquivo de layout xml.
fonte
No conjunto XML do botão
android:includeFontPadding="false"
fonte
Eu tive o mesmo problema e parece que é por causa da cor de fundo do botão. Tente alterar a cor de fundo para outra cor, por exemplo:
e veja se funciona. Você pode definir um estilo se desejar que o botão seja usado.
fonte
Para remover o preenchimento superior e inferior
Para remover o preenchimento esquerdo e direito
fonte
Não é um preenchimento, mas ou a sombra do plano de fundo desenhável ou um problema com o
minHeight
eminWidth
.Se você ainda deseja que o bom efeito cascata afete, crie seu próprio estilo de botão usando o
?attr/selectableItemBackground
:E aplique no botão:
fonte
Não parece preenchimento, margem ou altura / largura. A configuração
android:background="@null"
do botão perde a animação por toque, mas a configuração do plano de fundo para qualquer coisa corrige essa borda.Atualmente, estou trabalhando com:
fonte
Dê ao seu botão um plano de fundo personalizado: @ drawable / material_btn_blue
fonte
Você também pode fazer isso com
layout_width(height)
parâmetros.Por exemplo, eu apaguei o espaço superior e inferior com o
android:layout_height="18dp"
código.fonte
Um botão padrão não deve ser usado com largura total e é por isso que você experimenta isso.
fundo
Se você der uma olhada no Design de materiais - Estilo dos botões , verá que um botão tem uma área de clique em altura de 48dp, mas será exibido como 36dp de altura por ... por algum motivo.
Este é o contorno do plano de fundo que você vê, que não cobre toda a área do botão.
Possui cantos arredondados e algum preenchimento e deve ser clicável por si só, agrupar seu conteúdo e não abranger toda a largura na parte inferior da tela.
Solução
Como mencionado acima, o que você deseja é um plano de fundo diferente . Não é um botão padrão, mas um plano de fundo para um item selecionável com esse bom efeito cascata.
Para este caso de uso, existe o
?selectableItemBackground
atributo de tema que você pode usar para seus planos de fundo (especialmente em listas).Ele adicionará uma ondulação padrão da plataforma (ou alguma lista de estados de cores em <21) e usará as cores do tema atual.
Para seu uso, você pode apenas usar o seguinte:
Também não há necessidade de adicionar pesos de layout se a sua visualização for a única e se estender por toda a tela
Se você tiver alguma idéia diferente sobre como deve ser o seu plano de fundo, crie um drawable personalizado e gerencie cores e estados.
fonte
Depois de horas pesquisando várias respostas, finalmente encontrei uma solução que não usa um elemento diferente, manipula
minHeight
ouminWidth
, ou mesmo envolveButton
umRelativeLayout
.O principal argumento aqui é a definição do primeiro plano em vez do segundo plano, conforme muitas das respostas estipulam. A alteração do plano de fundo em si
selectableItemBackground
substituirá as alterações feitas na cor / plano de fundo do botão, se houver.Alterar o primeiro plano oferece o melhor dos dois mundos: livre-se do preenchimento "invisível" e mantenha o design do botão.
fonte
Você pode usar o estilo sem borda no AppCompatButton como abaixo. e use android: background com ele.
Código do botão
Resultado:
fonte