Ответ 1
yourTextView.setGravity(Gravity.CENTER);
Я прошу немного снисхождения здесь, я только начинаю с обучающих программ Android SDK, и я пытаюсь что-то сделать из интереса, но не в самом учебнике, но я надеюсь, что это будет легко.
Я пытаюсь центрировать элемент TextView
через код по горизонтали и по вертикали (я могу сделать это в XML просто отлично). Я видел несколько примеров того, как это сделать, когда родительский стол или какой-либо другой объект, но я надеюсь, что это будет легче для меня понять. (p.s. Не стесняйтесь исправить мою терминологию).
Вот пример кода из учебника/моей рабочей модели:
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);
}
}
Мне удалось найти метод setGravity
, и я попытался использовать его в setLayoutParams
для него, но я не уверен, для чего он нужен, поскольку я не могу найти то, что я должен импортироваться, чтобы определить константу WRAP_CONTENT
. Из того, что я понял, центрирование и content_wrapping + гравитация - две отдельные вещи. Я хотел бы привести пример того, как сделать это в этом случае, и, возможно, как/где я нашел бы ответ в документации API?
yourTextView.setGravity(Gravity.CENTER);
Для динамически центра
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
это будет работать точно.
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);
TextView text = new TextView(this);
text.setGravity(Gravity.CENTER);
и
text.setGravity(Gravity.TOP);
и
text.setGravity(Gravity.BOTTOM);
и
text.setGravity(Gravity.LEFT);
и
text.setGravity(Gravity.RIGHT);
и
text.setGravity(Gravity.CENTER_VERTICAL);
и
text.setGravity(Gravity.CENTER_HORIZONTAL);
И еще более доступные
Попробуйте добавить следующий код для применения параметров макета к TextView
LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(LinearLayout.CENTER_IN_PARENT);
textView.setLayoutParams(lp);
Если размер текста невелик, вы должны сделать ширину вашего текстового представления "fill_parent". После этого вы можете настроить силу TextView Gravity на центр:
TextView textView = new TextView(this);
textView.setText(message);
textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
textView.setGravity(Gravity.CENTER);