我需要将TextView
的基准定位为距离容器底部20dp的方式。
我怎样才能做到这一点?
具有底部边距或填充的布局会产生相同的结果。
我想在紫色行上输入文字“sit”。
当我写“sit”时,我的意思是“wert”应该碰到这行,而不是“q ... y”。
填充/边距等于紫色正方形的大小:
最佳答案
如果您仍然需要它,我编写了自定义方法,以免创建大量自定义 View 。它对我来说适合TextView
:
public static void applyExistingBotMarginFromBaseline(View view) {
final int baseline = view.getBaseline();
final int height = view.getHeight();
final ViewGroup.MarginLayoutParams marginLayoutParams;
try {
marginLayoutParams = ((ViewGroup.MarginLayoutParams) view.getLayoutParams());
} catch (ClassCastException e) {
throw new IllegalArgumentException("Applying margins on a view with wrong layout params.");
}
final int baselineMarginValue = baseline + marginLayoutParams.bottomMargin;
marginLayoutParams.bottomMargin = baselineMarginValue - height;
view.setLayoutParams(marginLayoutParams);
}
您可以在已测量 View 时应用它,如下所示:
final TextView title = (TextView) findViewById(R.id.title);
title.post(new Runnable() {
@Override public void run() {
Utils.applyExistingBotMarginFromBaseline(title);
}
});
您也可以使用数据绑定(bind)框架并使用一些自定义方法编写自己的自定义
BindingAdapter
,以从xml中使用它。