如何在spannable中的2行之间添加边距或填充?

时间:2015-08-18 17:21:45

标签: android android-layout android-styles spannablestring

我使用spannable在2行中创建一个字符串,每行都有不同的字体 除了一件事,它工作得很好 如何在第一个字符串和第二个字符串之间添加一些边距?

所以我这样做:

String a = "First line";  
String b = "Second line";  
SpannableString spannableName = new SpannableString(a + "\n" + b);  
spannableName.setSpan(new TextAppearanceSpan(activity, R.style.my_style),0,a.length(), 0);  

和my_style

<style name="my_style">
        <item name="android:layout_marginBottom">100dp</item>
        <item name="android:paddingBottom">10dp</item>
        <item name="android:textSize">@dimen/size</item>
        <item name="android:textColor">@color/mycolor</item>
    </style>  

我做错了什么?

我希望ab之间有一些填充/边距 我的风格中的填充/边距很大,因为我不确定它们是否被应用(测试数字)

2 个答案:

答案 0 :(得分:5)

以下是使用RelativeSizeSpan

执行此操作的方法
String a = "First line";
String b = "Second line";
SpannableString spannableName = new SpannableString(a + "\n" + b);
spannableName.setSpan(new TextAppearanceSpan(activity, R.style.my_style),0,a.length(), 0);
spannableName.setSpan(new RelativeSizeSpan(1.5f), a.length(), a.length() + 1, 0);

RelativeSizeSpan将使&#34; \ n&#34;字符1.5大于&#34; a&#34;和&#34; b&#34;字符串。

答案 1 :(得分:2)

这必须是您正在使用的UI控件的属性。

我假设您将文本设置为TextView。您可以使用textView.setLineSpacing(addvalue, multiplyValue)。这会将addValue单位添加到间距并将其乘以multiplyValue次。

同样,如果您希望通过样式进行设置,则可以将这些值添加到您的样式中:

<item name="android:lineSpacingExtra">SoemDPValue</item>
<item name="android:lineSpacingMultiplier">someNumber</item>