2010-09-23 3 views
173

Я могу использовать android:gravity="bottom|center_horizontal" в xml на текстовом изображении, чтобы получить желаемые результаты, но мне нужно сделать это программно. Мое текстовое изображение находится внутри tablerow, если это имеет значение в relativelayout.Android устанавливает гравитацию для TextView программно

Я пробовал:

LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL); 
labelTV.setLayoutParams(layoutParams); 

Но если я правильно понимаю, что бы применить его к tablerow, а не TextView?

ответ

422
labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM); 

Кроме того, вы говорите о тяжести или о layout_gravity? Последнее не будет работать в RelativeLayout.

+0

Спасибо, что сработали. Я чувствую себя немного глупо сейчас, когда этого не хватает. Первоначально проблема заключалась в установке полей в текстовом поле. Я предполагаю, что предположил, потому что я не мог найти метод setMargin(), который setGravity не существовал бы. – Nate

+0

superB ...................... –

+7

Спасибо +1, я нашел документацию, но, как обычно, она проходит только наполовину, неясно, где я могу получить константы силы тяжести от (Gravity.CENTER и т. д.). –

32

Это будет центрировать текст в текстовом виде:

TextView ta = (TextView) findViewById(R.layout.text_view); 
LayoutParams lp = new LayoutParams(); 
lp.gravity = Gravity.CENTER_HORIZONTAL; 
ta.setLayoutParams(lp); 
+3

Это не сработало. «lp.gravity не может быть разрешен или не является полем» – Nate

+0

Это странно, потому что этот код работает и компилируется для меня отлично. Как бы вы установили вес текстового вида, поскольку их метод setWeight() не установлен? – radiofrequency

+4

Я нашел проблему. Nate импортирует android.view.ViewGroup. Этот класс имеет разные методы и не компилируется. Вам следует вместо этого импортировать файл android.view.WindowManager. – Finnboy11

10

Мы можем установить макет гравитации на любом виде, как показано ниже ПУТЬ

myView = findViewById(R.id.myView); 
myView.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT); 
or 
myView.setGravity(Gravity.BOTTOM); 

Это equilent ниже XML код

<... 
android:gravity="center_vertical|right" 
... 
.../> 
+0

Макет гравитации не такой, как гравитация –

1

Вы должны использовать textView.setGravity(Gravity.CENTER_HORIZONTAL);.

Помните, что использование

LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
layoutParams2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; 

не будет работать. Это установит гравитацию для виджета, а не для текста.

1

Используйте этот код

 TextView textView = new TextView(YourActivity.this); 
     textView.setGravity(Gravity.CENTER | Gravity.TOP); 
     textView.setText("some text"); 
0
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM); 

Это установит серьезность вашего TextView.

Смежные вопросы