我试图通过设置TextView.setLineSpacing()的负“添加”来减少TextView中的行间距.除了底线被截断之外,它运行良好.
主要布局
- <TextView
- android:id="@+id/text_view"
- android:padding="dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:layout_centerVertical="true"
- tools:context=".MainActivity" />
主要活动:(注意
- package com.font_test;
- import android.app.Activity;
- import android.graphics.Typeface;
- import android.os.Bundle;
- import android.widget.TextView;
- public class MainActivity extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- final Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/custom_fonts.ttf");
- final TextView tv = (TextView) findViewById(R.id.text_view);
- tv.setTypeface(typeface);
- tv.setTextSize(60);
- tv.setLineSpacing(-30f,1f); // *** -30 to reduce line spacing
- tv.setBackgroundColor(0x280000ff);
- tv.setText("gggkiiikkk" + "\n" + "gikgikgik" + "\n" + "kigkigkig");
- }
- }
这导致在视图底部截断(注意底线的’g’):
似乎问题与错误的布局测量有关.如果我将TextView设置为
- android:layout_height="fill_parent"
它确实正确呈现:
解决方法
如果填充不起作用,则边距应该完成.如果仍有问题,可以始终将行间距值应用于视图的onMeasure方法.你必须为此创建一个
custom component并扩展onMeasure.