我试图通过设置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.