Как убрать эффект гравитации с помощью метода LayoutParams в Android? (Gravity.NO_GRAVITY не работает.)

Я ожидал, что TextView был выровнен вправо из-за NO_GRAVITY Однако он был выровнен влево. не должны NO_GRAVITY оставьте настройку гравитации такой, какая она есть, вместо выравнивания по левому краю. Если я также удалю эти две строки, возлюбленный, он все равно выравнивает TextView по левому краю, даже если я укажу android:layout_gravity="center" в коде xml.

params.gravity = Gravity.RIGHT;
params.gravity = Gravity.NO_GRAVITY;

Как я могу изменить другие свойства макета, не влияя на его гравитацию? В чем именно разница между LEFT а также NO_GRAVITY?

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.RIGHT;
params.gravity = Gravity.NO_GRAVITY;
textView.setLayoutParams(params);

1 ответ

Gravity.NO_GRAVITY может (это всего лишь предположение) означает гравитацию по умолчанию, которая в вашем регионе оставлена, но в некоторых странах она может быть правильной (например, арабский, из-за направления письма). если вы хотите выравнивание по центру, то вы можете установить Gravity.CENTER, очевидно...

если вы хотите объединить две гравитации, то вы можете использовать флаг добавить

params.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL;

кроме того, если вы устанавливаете LinearLayout.LayoutParams затем textViewродитель должен быть LinearLayout, в редких случаях с динамическими макетами и изменением нескольких потоков следует продолжить с requestLayout() вызов метода для принудительного перерисовки в правильном положении и потоке

Другие вопросы по тегам