Eu imploro alguma leniência aqui, estou apenas começando com os tutoriais do SDK do Android e estou tentando algo fora do interesse que não está no tutorial em si, mas espero que seja fácil.
Estou tentando centralizar um TextView
item via código horizontal e verticalmente (posso fazer isso em XML muito bem). Já vi vários exemplos de como fazer isso quando o pai é uma mesa ou algum outro objeto, mas espero que seja mais fácil de entender. (ps Sinta-se à vontade para corrigir minha terminologia).
Aqui está o código de exemplo do tutorial / meu modelo de trabalho:
package com.example.myfirstapp;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;
public class DisplayMessageActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
textView.setGravity(View.TEXT_ALIGNMENT_GRAVITY);
setContentView(textView);
}
}
Consegui localizar o setGravity
método e tentei me aventurar setLayoutParams
nele, mas não tenho certeza de qual é o escopo dele, pois não consigo localizar o que devo importar para obter a WRAP_CONTENT
constante para resolver . Pelo que entendi, centralização e content_wrapping + gravidade são duas coisas distintas. Gostaria de um exemplo de como fazer as duas coisas neste caso e talvez como / onde eu teria encontrado a resposta na documentação da API?
Respostas:
yourTextView.setGravity(Gravity.CENTER);
fonte
android:textAlignment="gravity"
atributo for definido como gravidade. Caso contrário, textAlignment substitui.yourTextView.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY);
Para centrar dinamicamente
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
fonte
TextView text = new TextView(this); text.setGravity(Gravity.CENTER);
e
text.setGravity(Gravity.TOP);
e
text.setGravity(Gravity.BOTTOM);
e
text.setGravity(Gravity.LEFT);
e
text.setGravity(Gravity.RIGHT);
e
text.setGravity(Gravity.CENTER_VERTICAL);
e
text.setGravity(Gravity.CENTER_HORIZONTAL);
E mais também disponíveis
fonte
isso vai funcionar com certeza ..
RelativeLayout layout = new RelativeLayout(R.layout.your_layour); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.CENTER_IN_PARENT); params.addRule(LinearLayout.CENTER_IN_PARENT); textView.setLayoutParams(params); textView.setGravity(Gravity.CENTER); layout.addView(textView); setcontentView(layout);
fonte
Tente adicionar o seguinte código para aplicar os parâmetros de layout ao TextView
LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.addRule(LinearLayout.CENTER_IN_PARENT); textView.setLayoutParams(lp);
fonte
se o tamanho do texto for pequeno, você deve definir a largura da visualização do texto como "fill_parent". Depois disso, você pode definir a gravidade do TextView para o centro:
TextView textView = new TextView(this); textView.setText(message); textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); textView.setGravity(Gravity.CENTER);
fonte
Você pode usar o seguinte para centralizar
TextView
texto de maneira programática em Kotlin:textview.gravity = Gravity.CENTER
fonte
tente este método
public void centerTextView(LinearLayout linearLayout) { TextView textView = new TextView(context); textView.setText(context.getString(R.string.no_records)); textView.setTypeface(Typeface.DEFAULT_BOLD); textView.setGravity(Gravity.CENTER); textView.setTextSize(18.0f); textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); linearLayout.addView(textView); }
fonte
Esses dois precisam andar juntos para que funcione. Estou coçando minha cabeça há um tempo.
numberView.textAlignment = View.TEXT_ALIGNMENT_CENTER numberView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
fonte