A visualização de texto deve ser match_parent ou fill_parent para que isso funcione. Se seu conteúdo de quebra automática, ele não será centralizado.
Kalel Wade
7
@KalelWade: centralizar texto em uma visualização de texto com wrap_content não faz nenhum sentido. Talvez você esteja pensando em centralizar uma visualização de texto em uma visualização pai; nesse caso, você simplesmente coloca essa linha no pai.
Mooing Duck
@Mooing Duck Portanto, o motivo para não usar o conteúdo do wrap - não faz sentido. Mas quando você está lidando e colando ou apenas se apressando, não pode colocar dois e dois juntos. Por isso eu mencionei.
Kalel Wade
1
se o TextView com largura e altura igual a "wrap_content" estiver dentro do LinearLayout com largura e altura "match_parent", será necessário definir a gravidade do layout do Linear_layout.
Faisal Naseer
1
@MooingDuck, quando a altura é "wrap_content" e a gravidade é "center_vertical", ele desenha no Design (visualização) como centralizado, mas em um dispositivo é posicionado na parte superior. Portanto, faça a altura "match_parent" e defina a gravidade como "center_vertical" ou "center".
CoolMind 28/02
297
Você também pode configurá-lo dinamicamente usando:
Quais são os critérios de julgamento para decidir qual caminho escolher, escrever em xml ou gravar em arquivo Java?
Kenju 20/08
2
@ Kenju se você quiser que seja facilmente editável e o valor não seja alterado durante o tempo de execução: XML. Se você precisar alterar o valor em tempo real (por exemplo, alterar o alinhamento quando o usuário pressionar um botão), poderá fazê-lo apenas via Java.
Gustavo Maciel
2
@GustavoMaciel então, basicamente xml, a menos que precise ser modificado dinamicamente ... Agora eu entendi. Obrigado pela sua resposta simples e útil!
Kenju #
115
android:layout_centerInParent="true"
Isso funciona quando usado com um RelativeLayout em que a altura e a largura do layout são definidas como wrap_content.
Isso NÃO funciona quando há quebra de linha no TextView. O texto será de largura total e com várias linhas e justificado à esquerda no TextView. Aparecerá justificado à esquerda no visor. Você deve usar "gravidade", conforme especificado nas outras respostas.
precisa saber é o seguinte
83
Você também pode usar a combinação:
android:gravity="left|center"
Então, se a largura da visualização de texto for maior que "fill_parent", o texto ainda estará alinhado à esquerda (não centralizado como com a gravidade configurada apenas para "center").
O primeiro no código XML. Você precisa prestar atenção no Gravityatributo. Você também pode encontrar esse atributo no Editor gráfico; pode ser mais fácil que o XML EDITOR.
Se você estiver usando o TableLayout, certifique-se de definir também a gravidade das TableRows. Caso contrário, não funcionará. Pelo menos não funcionou comigo até eu definir a gravidade do TableRow para o centro.
A semântica do código está incorreta. Substitua layout_centerhorizontale layout_centerverticalpor layout_centerHorizontale layout_centerVertical("H" e "V" para maiúsculas, caso contrário, não funcionará).
Yugidroid
2
layout_ * informa ao pai da View onde ela quer estar. Sem layout_ * conta a Ver como colocar os seus componentes
<TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center_vertical|center_horizontal"android:text="Your Text goes here"/>
Para fazer isso em tempo de execução, use algo como isto em sua atividade
Para layout relativo: em XML, use algo parecido com isto
<TextViewandroid:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_centerInParent="true"android:text="Your Text goes here"/>
Para fazer isso em tempo de execução, use algo como isto em sua atividade
Se a TextView'saltura e a largura forem wrap content, o texto TextViewsempre estará centralizado. Mas se a TextView'slargura é match_parente a altura é match_parentou, wrap_contententão, você deve escrever o código abaixo:
Isso realmente centralizará o texto no TextView. Se você usar apenas a gravidade, haverá um pouco de preenchimento à direita, dependendo do texto.
tarrball
14
Em RelativeLayout, será bom com isso.
E outro Buttone qualquer outra coisa que você possa adicionar.
O seguinte funciona bem para mim.
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#ff314859"android:paddingLeft="16dp"android:paddingRight="16dp"><TextViewandroid:id="@+id/txt_logo"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="your text here"android:textSize="30dp"android:gravity="center"/>
...other button or anything else...
</RelativeLayout>
Se você está tentando centralizar o texto em um TableRow em um TableLayout, eis como eu consegui isso:
<TableRowandroid:id="@+id/rowName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dip"><TextViewandroid:id="@+id/lblSomeLabel"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center"android:layout_width="0dp"android:layout_weight="100"android:text="Your Text Here"/></TableRow>
TextAlignment = "center" não vai fazer o trabalho até que o TextView tem dimensões para match_parent
Saurabh
O exemplo acima do @SAurabh está funcionando sem problemas.
Chathura Wijesinghe 19/06/19
ele está trabalhando sem gravidade para gerar os pais ou distribuir a gravidade em si? Não alinhará o texto alinhará o texto dentro de seus limites de visualização; portanto, até que o textView obtenha match_parent nesse caso, não parecerá isso sem gravidade no layout pai ou no layout_gravity em si
SAurabh
9
Aqui está a minha resposta que eu tinha usado no meu aplicativo. Mostra o texto no centro da tela.
A altura e a largura do TextView são agrupadas, o texto na visualização de texto sempre é centralizado e, em seguida, é centralizado no layout pai usando:
A gravidade do TextView funciona de acordo com o layout pai.
LinearLayout :
Se você usar o LinearLayout, encontrará dois atributos de gravidade android: gravity e android: layout_gravity
android: gravidade: representa a poção de layout do texto interno do TextView enquanto android: layout_gravity: representa a posição do TextView na visualização pai.
Se você deseja definir o texto na horizontal e na vertical, use o código abaixo
android: layout_centerInParent = "true" se você deseja TextView na posição central da visualização pai. android: layout_centerHorizontal = "true" se você quiser o TextView no centro horizontal da visualização pai. android: layout_centerVertical = "true" se você quiser o TextView no centro vertical da visualização pai.
Btw, algum motivo para você reverter para a revisão anterior? A revisão que você reverteu é uma boa prática para que, conforme mencionado pelo editor, possa ajudar os editores de texto na codificação.
Respostas:
Suponho que você esteja usando o layout XML.
Você também pode usar a gravidade
center_vertical
ou decenter_horizontal
acordo com sua necessidade.e como @stealthcopter comentou em java:
.setGravity(Gravity.CENTER);
fonte
android:gravity="center"
). Ele ainda aparece na extrema esquerda da tela. :(android:layout_gravity="center"
, o que faz outra coisa.Isto irá fazer o truque
fonte
Você também pode configurá-lo dinamicamente usando:
fonte
Isso funciona quando usado com um RelativeLayout em que a altura e a largura do layout são definidas como wrap_content.
fonte
TextView
. O texto será de largura total e com várias linhas e justificado à esquerda noTextView
. Aparecerá justificado à esquerda no visor. Você deve usar "gravidade", conforme especificado nas outras respostas.Você também pode usar a combinação:
Então, se a largura da visualização de texto for maior que "fill_parent", o texto ainda estará alinhado à esquerda (não centralizado como com a gravidade configurada apenas para "center").
fonte
Aplique gravidade:
Para vertical:
Em XML:
fonte
Há duas maneiras de fazer isso.
O primeiro no código XML. Você precisa prestar atenção no
Gravity
atributo. Você também pode encontrar esse atributo no Editor gráfico; pode ser mais fácil que o XML EDITOR.Para o seu cenário específico, os valores da gravidade serão:
No editor gráfico, você encontrará todos os valores possíveis e até os resultados.
fonte
Se você estiver usando o TableLayout, certifique-se de definir também a gravidade das TableRows. Caso contrário, não funcionará. Pelo menos não funcionou comigo até eu definir a gravidade do TableRow para o centro.
Por exemplo, assim:
fonte
Você precisa definir a Gravidade do TextView (centro horizontal e centro vertical) assim:
e
E usando dinamicamente:
fonte
layout_centerhorizontal
elayout_centervertical
porlayout_centerHorizontal
elayout_centerVertical
("H" e "V" para maiúsculas, caso contrário, não funcionará).Na minha opinião,
é melhor que,
o que é melhor que,
pelo menos para formatar o texto.
fonte
Para layout linear: em XML, use algo como isto
Para fazer isso em tempo de execução, use algo como isto em sua atividade
Para layout relativo: em XML, use algo parecido com isto
Para fazer isso em tempo de execução, use algo como isto em sua atividade
fonte
Use no arquivo XML.
Arquivo de layout
ou:
Use isso dentro da classe Java
fonte
Use isso para o layout relativo
e para outro layout
fonte
Se a
TextView's
altura e a largura foremwrap content
, o textoTextView
sempre estará centralizado. Mas se aTextView's
largura ématch_parent
e a altura ématch_parent
ou,wrap_content
então, você deve escrever o código abaixo:Para RelativeLayout:
Para LinearLayout:
fonte
Enquanto o uso da gravidade funciona para o TextView, há um método alternativo implementado no nível 17 da API -
Não sei a diferença, mas também funciona. No entanto, apenas para o nível 17 da API ou superior.
fonte
Em
RelativeLayout
, será bom com isso.E outro
Button
e qualquer outra coisa que você possa adicionar.O seguinte funciona bem para mim.
fonte
A maneira mais fácil (que é surpreendentemente mencionada apenas nos comentários, por isso estou postando como resposta) é:
fonte
Você pode apenas definir o
gravity
da sua visualização de textoCENTER
.fonte
Se você está tentando centralizar o texto em um TableRow em um TableLayout, eis como eu consegui isso:
fonte
Usar
android:textAlignment="center"
fonte
Aqui está a minha resposta que eu tinha usado no meu aplicativo. Mostra o texto no centro da tela.
fonte
Se você estiver usando o Layout Relativo:
Se você estiver usando LinearLayout
fonte
Como muitas respostas sugerem acima, funciona bem.
Se você deseja centralizá-lo apenas na vertical:
ou apenas horizontalmente:
fonte
Simplesmente, no seu arquivo XML, defina a gravidade do textview no centro:
fonte
Você pode fazer assim para centralizar o texto
fonte
A altura e a largura do TextView são agrupadas, o texto na visualização de texto sempre é centralizado e, em seguida, é centralizado no layout pai usando:
Para LinearLayout também o código é o mesmo:
e o pai pro gramatical é o código Java RelativeLayout, isso em tempo de execução, use algo assim em sua atividade
fonte
Podemos conseguir isso de várias maneiras:
fonte
A gravidade do TextView funciona de acordo com o layout pai.
LinearLayout :
Se você usar o LinearLayout, encontrará dois atributos de gravidade android: gravity e android: layout_gravity
android: gravidade: representa a poção de layout do texto interno do TextView enquanto android: layout_gravity: representa a posição do TextView na visualização pai.
Se você deseja definir o texto na horizontal e na vertical, use o código abaixo
RelativeLayout :
Usando RelativeLayout, você pode usar a propriedade abaixo no TextView
android: gravity = "center" para o centro de texto no TextView.
android: gravity = "center_horizontal" texto interno, se você quiser centralizado horizontalmente.
android: gravity = "center_vertical" texto interno, se você deseja centralizar verticalmente.
android: layout_centerInParent = "true" se você deseja TextView na posição central da visualização pai. android: layout_centerHorizontal = "true" se você quiser o TextView no centro horizontal da visualização pai. android: layout_centerVertical = "true" se você quiser o TextView no centro vertical da visualização pai.
fonte
Tente assim, vai funcionar
fonte
Na verdade, podemos fazer melhor excluindo fontPadding.
fonte