Почему мой текст редактирования не принимает гравитацию ...? - PullRequest
0 голосов
/ 12 декабря 2011

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

image

код:

EditText bcc = new EditText(getApplicationContext());
        LayoutParams para = new LayoutParams(LayoutParams.FILL_PARENT, 45);
        //bcc.setBackgroundColor(Color.parseColor("#00000000"));
        bcc.setTextColor(Color.parseColor("#000000"));
        bcc.setSingleLine(true);
        para.setMargins(0, 0, 0, 5); // left, top, right, bottom.       
        bcc.setTextSize(15);
        bcc.setGravity(Gravity.BOTTOM);
        bcc.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
        bcc.setId(100);
        bcc.setLayoutParams(para);

Ответы [ 5 ]

1 голос
/ 12 декабря 2011

установить гравитацию родителя вида . Если родительский вид является макетом, код будет выглядеть следующим образом:

((LinearLayout) bcc.getParent()).setGravity(Gravity.CENTER_VERTICAL);
1 голос
/ 12 декабря 2011

Вы должны использовать layout_gravity, так как gravity определяет, как будет установлен контент вашего элемента управления (EditText).

см. этот вопрос для получения дополнительной информации.

1 голос
/ 12 декабря 2011

Эта гравитация bcc.setGravity(Gravity.BOTTOM); отмечает только то, как текст должен лежать внутри EditText.

Если родительский элемент EditText равен RelativeLayout, вы можете указать правила внутри RelativeLayout.LayoutParams.

0 голосов
/ 17 февраля 2015

Когда вы создаете EditText программно, вы должны сначала установить setKeyListener (TextKeyListener.getInstance ());

В противном случае ваш взгляд всегда будет соответствовать Gravity.TOP.

Я не знаю реальной причины, но прежде чем вы укажете любой другой параметр для EditText, вы должны установить setKeyListener (TextKeyListener.getInstance ());

Исправление: работает только в том случае, если вы создаете свой пользовательский виджет, расширяя EditText и определяя свой виджет в XML. Проверено только на Android 5.0.1

0 голосов
/ 12 декабря 2011

В конце концов вы бы добавили этот EditText bcc в группу просмотра? В зависимости от того, какой тип ViewGroup является родительским, вам потребуется выполнить следующее:

LinearLayout:

через XML: Вы должны установить Android: layout_gravity = "center_vertical".

через код:

LinearLayout.LayoutParams lp = viewGroup.getLayoutParams();
lp.gravity = Gravity.CENTER_VERTICAL;
viewGroup.setLayoutParams(lp);

Код будет отличаться для разных типов родительского макета.

...