在一个textview Android

时间:2015-07-18 12:21:16

标签: android android-gravity

我需要在一个TextView中设置两个文本(Text1和Text2)。以下是我的要求。

Text1应该大于Text2的字体大小。

Text2将低于Text1。两者都是中心对齐的。

Text1应该被赋予gravity:center以使其类似于其他layout.Text 2将始终低于Text1

3 个答案:

答案 0 :(得分:0)

只有一个TextView不能这样做。

基本上,一个TextView保留文本和该文本的一些属性。该属性应用于整个TextView,即整个文本。 如果要为Text1和Text2提供不同的属性,则必须具有两个TextView。

最后,android中的任何UI元素都是由xml给出的,在这种情况下,TexView就是这样的:

<TextView android:text="@string/title" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#ffffd300"
            android:gravity="center_horizontal"
            android:textSize="40sp"
            android:id="@+id/textViewTitle"
            android:layout_gravity="center" />

在属性文字中,您将Text1 设置为Text2。在这种情况下,我们使用@ string / title,这意味着我们正在使用字符串资源中名为“title”的字符串。

参考: http://developer.android.com/reference/android/widget/TextView.html

答案 1 :(得分:0)

无法在单个TextView中合并两个文本。它破坏了TextView本身的尊重。

您需要Vertical LinearLayout,其背景和边框类似于TextView。在此布局中,您需要分别为text1和text2分别使用两个TextView。您可以将所需的属性应用于单个TextView

答案 2 :(得分:0)

我仍然不清楚你的问题,你想同时显示两个文本吗?

如果你一次只展示一种“风格”,mayo的回答是正确的。您可以使用switch语句来实现它:

switch(textStyle){
    case 1: myTextView.setTextAppearance(getApplicationContext(), R.style.styleText1);
            break;
    case 2: myTextView.setTextAppearance(getApplicationContext(), R.style.styleText2);
            break
}

更多信息here

但是如果你想同时显示两者,WebView是你唯一的选择:

Webview wv;
//Specify Text1 and Text2 as strings.
String text = "<html><body style=\"font-size:25px;\">"+"<p align=\"center\">"+ Text1 +"</p>"+"<style=\"font-size:15px;\">"+"<p align=\"center\">"+ Text2 +"</p>"+"</body></html>";
wv.loadData(""+text, "text/html", "utf-8");