2015-01-11 22 views
6

TextViewの位置は、ベースラインがコンテナの底から20dpになるようにする必要があります。Android TextViewベースライン関連のマージン

どうすればこの問題を解決できますか?

ボトムマージンまたはパディングのレイアウトでも同じ結果が得られます。

紫色の線に「座る」というテキストを作りたいと思います。 私が '座る'と書いているとき、私は、 'wert'が 'q ... y'ではなく、その行に触れるべきだということを意味します。

パディング/マージンが紫色の正方形のサイズと同じである:あなたの問題は、親を基準にパディング/マージンではありません

enter image description here

+0

答えを見つけましたか? –

答えて

1

、私はあなたのフォントについてですが、私は変更することをお勧めいたします考えますfontFamily:"yourStyle" 最悪、あなたはまだそれが必要な場合は、私はカスタムビューの多くを作成しないために、カスタムメソッドを書いたここCustom fonts and XML layouts (Android)またはSet specific font in a styles.xml

1

を説明されて再difine独自のフォントスタイルに持っています。それは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から使用します。