Estou projetando minha interface do usuário do aplicativo. Eu preciso de um layout assim:
(<e> são botões). O problema é que não sei como garantir que o TextView preencha o espaço restante, com dois botões com tamanho fixo.
Se eu usar fill_parent no modo de exibição de texto, o segundo botão (>) não poderá ser exibido.
Como criar um layout parecido com a imagem?
android
layout
android-layout
Luke Vo
fonte
fonte
Respostas:
A resposta de woodshy funcionou para mim, e é mais simples do que a resposta de Ungureanu Liviu, uma vez que não usa
RelativeLayout
. Estou dando meu layout para maior clareza:fonte
alignLeft
ealignParentLeft
etc, que nunca podem ser alcançadasLinearLayout
.Caso se <TEXT VIEW> seja colocado em LinearLayout, defina a propriedade Layout_weight de <e> como 0 e 1 para TextView.
No caso de RelativeLayout, alinhe <e> para esquerda e direita e defina a propriedade "Layout à esquerda de" e "Layout à direita de" do TextView com os IDs de <e>
fonte
Se você usar
RelativeLayout
, poderá fazer algo assim:fonte
>
botão?Usando um
ConstraintLayout
, eu encontrei algo comotrabalho. A chave é definir as restrições das margens direita, esquerda, superior e inferior de forma adequada, depois definir a largura e a altura
0dp
e permitir que ela descubra o seu próprio tamanho.fonte
TextView
há as restrições esquerda e direita. OTextView
não será esticado se o primeiroButton
tiver a restrição certa para oTextView
e o últimoButton
tiver a restrição esquerda para oTextView
.É simples Você define o minWidth ou minHeight, depende do que você está procurando, horizontal ou vertical. E para o outro objeto (aquele que você deseja preencher o espaço restante), você define um peso de 1 (define a largura para envolver o conteúdo), para que ele preencha o restante da área.
fonte
você pode usar o atributo high layout_weight. Abaixo, você pode ver um layout em que o ListView ocupa todo o espaço livre com os botões na parte inferior:
fonte
Para aqueles com a mesma falha
<LinearLayout...>
que eu:É importante especificar
android:layout_width="fill_parent"
, ele não funcionaráwrap_content
.OTOH, você pode omitir
android:layout_weight = "0"
, não é necessário.Meu código é basicamente o mesmo que o código em https://stackoverflow.com/a/25781167/755804 (de Vivek Pandey)
fonte
Você deve evitar aninhar 2 layouts relativos, pois os layouts relativos sempre fazem 2 passes para desenhar (contra 1 para qualquer outro tipo de layout). Torna-se exponencial quando você os aninha. Você deve usar o layout linear com largura = 0 e peso = 1 no elemento que deseja preencher o espaço restante. Essa resposta é melhor para o desempenho e as práticas. Lembre-se: use o layout relativo SOMENTE quando não tiver outra opção.
fonte
Você pode usar definir o
layout_width
oulayout_width
como0dp
(Pela orientação que deseja preencher o espaço restante). Em seguida, use olayout_weight
para preencher o espaço restante.fonte
use um Relativelayout para agrupar LinearLayout
fonte
eu encontrei
fonte
Ao usar um layout relativo, você pode esticar uma vista ancorando-a nas duas vistas para as quais deve esticar. Embora a altura especificada seja desconsiderada, o Android ainda requer um atributo de altura, e foi por isso que escrevi "0dp". Exemplo:
fonte