Android TextView基线相关保证金

时间:2015-01-11 10:54:32

标签: android layout

我需要以TextView的方式定位其基线距离容器底部20dp的方式。

我怎样才能做到这一点?

底部边距或填充的布局产生相同的结果。

我想让文字“坐”在紫线上。 当我写'坐'时,我的意思是,'wert'应该接触线,而不是'q ... y'。

填充/边距等于紫色方形尺寸:

enter image description here

2 个答案:

答案 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

中有所解释