Yes, you can do this using the LineHeightSpan interface. Here is a quick and dirty code example on how to do this:
public class MyActivity extends Activity { private static class MySpan implements LineHeightSpan { private final int height; MySpan(int height) { this.height = height; } @Override public void chooseHeight(CharSequence text, int start, int end, int spanstartv, int v, FontMetricsInt fm) { fm.bottom += height; fm.descent += height; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final TextView tv = new TextView(this); setContentView(tv); tv.setText("Lines:\n", BufferType.EDITABLE); appendLine(tv.getEditableText(), "Line 1 = 40\n", 40); appendLine(tv.getEditableText(), "Line 2 = 30\n", 30); appendLine(tv.getEditableText(), "Line 3 = 20\n", 20); appendLine(tv.getEditableText(), "Line 4 = 10\n", 10); } private void appendLine(Editable text, String string, int height) { final int start = text.length(); text.append(string); final int end = text.length(); text.setSpan(new MySpan(height), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } }
Joe Jun 20 2018-12-12T00: 00Z
source share