Android两个文本视图,将它们对齐为一个段落
假设我有两个Android两个文本视图,将它们对齐为一个段落,android,user-interface,textview,alignment,android-relativelayout,Android,User Interface,Textview,Alignment,Android Relativelayout,假设我有两个文本视图,一个标题和详细信息,详细信息是标题的结尾(同一行),虽然标题是一行,但详细信息可以是多行的,我的问题是,如何配置详细信息文本视图,当它开始一个新行时,与其将其与文本视图的前一行对齐,不如将其与标题文本视图对齐,从而创建段落感觉 请查看这些屏幕截图以了解我试图实现的目标(标题为粗体文本,详细信息如下): 所需的: 到目前为止我拥有的: 我能想到的唯一解决方案是对两者都使用一个textview,并用HTML格式化文本,但是如果我需要一个更大的文本大小作为标题怎么办 谢谢 是
文本视图
,一个标题和详细信息,详细信息是标题的结尾(同一行),虽然标题是一行,但详细信息可以是多行的,我的问题是,如何配置详细信息文本视图
,当它开始一个新行时,与其将其与文本视图
的前一行对齐,不如将其与标题文本视图对齐,从而创建段落感觉
请查看这些屏幕截图以了解我试图实现的目标(标题为粗体文本,详细信息如下):
所需的:
到目前为止我拥有的:
我能想到的唯一解决方案是对两者都使用一个textview
,并用HTML格式化文本,但是如果我需要一个更大的文本大小作为标题怎么办
谢谢 是的,正如您所提到的,我还看到一个
TextView
,其中的文本具有不同的字符串大小/颜色
要实现这一点,您需要使用SpannableString
-
还请检查此项以了解详细信息。用于您的问题以分隔两个文本视图。您可以使用
这就行了
<TextView
..
android:id="@+id/text_view"
/>
自定义方法
public void setTextWithSpan(TextView textView, String text, String spanTextBold,String secondPartOfText,StyleSpan style) {
SpannableStringBuilder sb = new SpannableStringBuilder(text);
int start = text.indexOf(spanTextBold);
int end = start + spanTextBold.length();
sb.setSpan(style, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );
//sb.setSpan(new ForegroundColorSpan(Color.BLUE), start, end ,0); // if you need a color
int startTwo = text.indexOf(secondPartOfText);
int endTwo = startTwo + secondPartOfText.length();
// sb.setSpan(new StyleSpan(Typeface.ITALIC),startTwo,endTwo , 0);
sb.setSpan(new RelativeSizeSpan(0.8f), startTwo, endTwo, 0);
textView.setText(sb);
}
您想使用单文本视图获取和输出像您的大图像一样的图像吗?这是我自己的例子,如果你喜欢,用它>@谁反对这个?为什么?如果出了什么问题,我可以解决
public void setTextWithSpan(TextView textView, String text, String spanTextBold,String secondPartOfText,StyleSpan style) {
SpannableStringBuilder sb = new SpannableStringBuilder(text);
int start = text.indexOf(spanTextBold);
int end = start + spanTextBold.length();
sb.setSpan(style, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );
//sb.setSpan(new ForegroundColorSpan(Color.BLUE), start, end ,0); // if you need a color
int startTwo = text.indexOf(secondPartOfText);
int endTwo = startTwo + secondPartOfText.length();
// sb.setSpan(new StyleSpan(Typeface.ITALIC),startTwo,endTwo , 0);
sb.setSpan(new RelativeSizeSpan(0.8f), startTwo, endTwo, 0);
textView.setText(sb);
}