Подтвердить что ты не робот

Программный центр текста TextView

Я прошу немного снисхождения здесь, я только начинаю с обучающих программ 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?

4b9b3361

Ответ 1

yourTextView.setGravity(Gravity.CENTER);

Ответ 2

Для динамически центра

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

Ответ 3

это будет работать точно.

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);

Ответ 4

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);

И еще более доступные

Ответ 5

Попробуйте добавить следующий код для применения параметров макета к TextView

LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(LinearLayout.CENTER_IN_PARENT);
textView.setLayoutParams(lp);

Ответ 6

Если размер текста невелик, вы должны сделать ширину вашего текстового представления "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);