2016-03-12 2 views
-1

Я пытаюсь добавить TextView к LinearLayout таким образом:Android TextView Гравитация не устанавливается программно

private TextView getNeededTextView(MyClass acc) 
{ 
    TextView tv = new TextView(context); 
    tv.setGravity(Gravity.CENTER); 
    tv.setText(acc.getAccesabiltyString()); 
    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params.setMargins(0, 10, 0, 0); 
    tv.setLayoutParams(params); 
    return tv; 
} 

и снаружи: linearLayoutVar.addView(getNeededTextView(myClassVar));

Представление текста добавляется с его текст с верхним краем, но не с гравитацией. Почему это?

ответ

1

Атрибут тяжести определяет гравитацию вида внутри границ. Вы можете проверить разницу между вашим кодом и то же изменение этой линии

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

для этого другого

LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 

Я думаю, что атрибут, который вы ищете, Layout Gravity, который определяет, где, в родительском макете , следует разместить точку зрения

+0

Это помогло вам. Я просто не понимал, почему это помогло. Когда я добавляю текстовое представление в xml, я устанавливаю его как WRAP_CONTENT, так почему мне нужно добавить его сейчас как MATCH_PARENT? –

+0

О, нет. Это был просто пример, чтобы вы могли видеть, как работает атрибут 'gravity'. Добавьте свое представление с помощью значения 'WRAP_CONTENT' и вместо того, чтобы установить его значение' gravity', установите значение 'layout_gravity' его' LayoutParams' – Pelocho

+0

, которое я не понял .. Я переключился на MATCH_PARENT и работал с телевизором .setGravity .. все еще не понял, почему это сработало –

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