Bem vindo ao curso de Introdução ao Desenvolvimento de Aplicativos Android. Nesta aula, falaremos sobre o gerenciador de layout e linear layout, que já utilizamos aulas anteriores. Você deve lembrar que usamos o linear layout quando colocamos a tag linear layout no código XML. A principal particularidade desse gerenciador de layout é que views são posicionadas na ordem que aparecem no arquivo XML, sendo que essas views podem ser posicionadas horizontalmente ou verticalmente, usando o atributo Android:orientation, que é atributo obrigatório quando estamos usando linear layout. Apesar de já termos visto o linear layout aulas anteriores, não falamos nada, ainda, sobre alguns atributos importantes para que você gere a sua interface gráfica. O propósito dessa vídeoaula é apresentar esses atributos. Vamos ao código fonte do aplicativo para ver como tudo isso funciona. Vamos, inicialmente, adicionar três botões na interface gráfica e rotular esses botões com as letras a,b e c. Após isso, vamos verificar o que acontece quando mudamos a orientação. Primeiramente, colocamos a orientação vertical, então, a,b e c são posicionados de cima para baixo. Quando alteramos para a horizontal, esses mesmos botões são colocados da esquerda para a direita. Como aqui não precisamos utilizar outros elementos como referência, então é comum não colocarmos uma ID para os elementos da interface gráfica, a não ser que queiramos obter dados desses elementos de dentro do código Java. À primeira vista, temos a impressão de que o linear layout é básico e inflexível demais para ser útil para alguma coisa. Entretanto, alguns outros atributos fazem com que este gerenciador seja a opção mais apropriada para algumas tarefas. Vejamos o primeiro deles, o atributo Layout_Weight. Este atributo é usado para fazer com que alguns elementos sejam maiores do que os outros. Para isso, atribuímos valor numérico maior para os atributos maiores, por exemplo, vamos colocar este atributo no segundo botão, atribuir a ele o valor e ver o que acontece. O que acontece aqui é que o linear layout, primeiro garante que todos os elementos terão espaço suficiente para o seu conteúdo. O espaço restante é distribuído proporcionalmente entre os elementos que possuem valor numérico maior do que zero, para o atributo layout_weight. Como neste exemplo só o segundo botão tem o valor atribuído a layout_weight, não fica muito claro o que está acontecendo. Nesse caso, vou atribuir o peso dois para o terceiro botão e ver o resultado. Aqui nós podemos ver que dois terços do espaço restante foi atribuído para o terceiro botão e terço foi atribuído para o segundo botão. Como o primeiro botão não atribuiu nenhum valor numérico para layout_weight, nada do espaço restante foi atribuído a eles. Outro atributo muito comum é chamado de gravity, que serve para modificar o alinhamento dos textos dentro de uma view. Vamos atribuir o valor top para o atributo gravity dentro do segundo botão. Fazendo isso, o texto não ficará centralizado, mas alinhando ao topo do botão. Outros valores são possíveis para o atributo gravity, como: bottom, left, right, e assim por diante. O Android Studio sempre lhe fornecerá uma lista de opções e elas são auto explicativas. Outro atributo importante é o atributo layout_gravity. Não confunda com o atributo gravity visto anteriormente. Observe o prefixo layout mais o underscore, que existe neste atributo. O atributo layout_gravity serve para mover o elemento inteiro para outra posição dentro do espaço definido para ele. Vamos, por exemplo, usar o atributo layout_gravity no terceiro botão e atribuir a ele o valor end. O resultado é que o elemento inteiro foi alinhado à direita, dentro do espaço atribuído a ele. Resumo, linear layout posiciona elementos na ordem que aparecem no arquivo XML. Após posicionar os elementos, você pode esticar esses elementos usando o atributo weight. Após esticar, você posiciona o conteúdo usando o atributo gravity e após posicionar o conteúdo, você pode utilizar layout_gravity para dizer, exatamente, onde deseja que a view apareça dentro do espaço disponível para ela.