Błagam o trochę wyrozumiałości, dopiero zaczynam od samouczków Android SDK i próbuję czegoś interesującego, czego nie ma w samym tutorialu, ale mam nadzieję, że będzie łatwe.
Próbuję wyśrodkować TextView
element za pomocą kodu poziomo i pionowo (mogę to zrobić w XML dobrze). Widziałem kilka przykładów, jak to zrobić, gdy rodzicem jest stół lub inny przedmiot, ale mam nadzieję, że byłoby mi to łatwiejsze do zrozumienia. (ps Zapraszam do poprawiania mojej terminologii).
Oto przykładowy kod z samouczka / mojego modelu roboczego:
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);
}
}
Udało mi się zlokalizować setGravity
metodę i próbowałem się nią zająć setLayoutParams
, ale nie jestem pewien, jaki jest jej zakres, ponieważ nie mogę zlokalizować tego, co powinienem importować, aby uzyskać WRAP_CONTENT
stałą do rozwiązania . Z tego, co zrozumiałem, centrowanie i content_wrapping + grawitacja to dwie odrębne rzeczy. Chciałbym mieć przykład, jak to zrobić w tym przypadku i może jak / gdzie znalazłbym odpowiedź w dokumentacji API?
Odpowiedzi:
yourTextView.setGravity(Gravity.CENTER);
źródło
android:textAlignment="gravity"
atrybut jest ustawiony na grawitację. W przeciwnym razie textAlignment zastępuje.yourTextView.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY);
Dynamiczne wyśrodkowanie
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
źródło
TextView text = new TextView(this); text.setGravity(Gravity.CENTER);
i
text.setGravity(Gravity.TOP);
i
text.setGravity(Gravity.BOTTOM);
i
text.setGravity(Gravity.LEFT);
i
text.setGravity(Gravity.RIGHT);
i
text.setGravity(Gravity.CENTER_VERTICAL);
i
text.setGravity(Gravity.CENTER_HORIZONTAL);
I więcej również dostępnych
źródło
to na pewno zadziała.
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);
źródło
Spróbuj dodać następujący kod, aby zastosować parametry układu do TextView
LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.addRule(LinearLayout.CENTER_IN_PARENT); textView.setLayoutParams(lp);
źródło
jeśli rozmiar tekstu jest mały, należy ustawić szerokość widoku tekstu na „fill_parent”. Następnie możesz ustawić swoją TextView Gravity na środku:
TextView textView = new TextView(this); textView.setText(message); textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); textView.setGravity(Gravity.CENTER);
źródło
Aby programowo wyśrodkować
TextView
tekst w Kotlinie, możesz użyć następujących poleceń:textview.gravity = Gravity.CENTER
źródło
wypróbuj tę metodę
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); }
źródło
Te dwie rzeczy muszą iść razem, aby to zadziałało. Przez chwilę drapałem się w głowę.
numberView.textAlignment = View.TEXT_ALIGNMENT_CENTER numberView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
źródło