我需要以TextView
的方式定位其基线距离容器底部20dp的方式。
我怎样才能做到这一点?
底部边距或填充的布局产生相同的结果。
我想让文字“坐”在紫线上。 当我写'坐'时,我的意思是,'wert'应该接触线,而不是'q ... y'。
填充/边距等于紫色方形尺寸:
答案 0 :(得分:3)
如果你仍然需要它,我写了自定义方法,不创建大量的自定义视图。它适用于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);
}
您可以在已经测量视图时应用它,如下所示:
final TextView title = (TextView) findViewById(R.id.title);
title.post(new Runnable() {
@Override public void run() {
Utils.applyExistingBotMarginFromBaseline(title);
}
});
此外,您可以使用数据绑定框架并使用一些自定义方法编写自己的自定义BindingAdapter
,以便在xml中使用它。
答案 1 :(得分:1)
您的问题不是父母引用的填充/边距,我认为是关于您的字体,我建议您更改fontFamily:"yourStyle"
甚至最糟糕的是你必须重新定义自己的字体样式,这在Custom fonts and XML layouts (Android)或Set specific font in a styles.xml