Как убрать эффект гравитации с помощью метода 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()
вызов метода для принудительного перерисовки в правильном положении и потоке