如何像这样设置3 Textview相同的行

时间:2014-03-31 06:46:44

标签: android xml

我想在同一行中设置三个textview。我使用LinearLayout。无法正确设置。

这是我的XML:

<LinearLayout
    android:id="@+id/tableRow3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal" >

        <TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"        
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="@string/or"
    android:textSize="25sp"
    android:singleLine="true"
     /> 

        <TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:textColor="#54d66a"
    android:text="@string/login"
    android:textSize="25sp"
   android:textAppearance="?android:attr/textAppearanceLarge"
     /> 

        <TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"

    android:text="@string/email_details"
    android:textSize="25sp"

     /> 


  </LinearLayout>  

我可以知道实现目标的正确方法是什么?也许这个问题太基础了,但我找不到合适的解决方案。请帮帮我。

8 个答案:

答案 0 :(得分:2)

您只需要从TextView中删除android:ems="10"它将自动以单行显示。检查此代码。

 <TableRow
    android:id="@+id/tableRow3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="@string/or"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="25sp" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/login"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#54d66a"
        android:textSize="25sp" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/email_details"
        android:textSize="25sp" />
</TableRow>

答案 1 :(得分:1)

不需要3个TextView&#39。您可以将整行合并到一个TextView中。有两种可能的解决方案。 1.您可以使用SpannableString来达到同样的效果。有关Spannables的更多信息,请参阅此post。 2.您可以使用Html标签装饰该String。见post

答案 2 :(得分:1)

如果您只想获得不同的文字颜色,可以使用HTML标签,例如:

String html = "or <font color="green">login </font> with your email address";
myTextView.setText(Html.fromHtml(html), TextView.BufferType.SPANNABLE);

答案 3 :(得分:0)

如果您只想添加一行,则应添加水平线性布局。

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/tabs_layout"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
android:orientation="horizontal"
>
 <TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"        
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/or"
android:textSize="25sp"
android:singleLine="true"
 /> 

 <TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:textColor="#54d66a"
android:text="@string/login"
android:textSize="25sp"
android:textAppearance="?android:attr/textAppearanceLarge"
 /> 

    <TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:text="@string/email_details"
android:textSize="25sp"

 /> 
  </LinearLayout>

答案 4 :(得分:0)

我发现你没有在布局中提到ems值的解决方案我修改了你的布局使用这个......

     <TableRow
        android:id="@+id/tableRow3"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp" >

        <TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"        
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="or"
    android1:paddingRight="5dp"
    android:textSize="25sp"
    android:singleLine="true"
     /> 

        <TextView
    android:id="@+id/textView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#54d66a"
    android:text="login"
    android1:paddingRight="5dp"
    android:textSize="25sp"
    android:textAppearance="?android:attr/textAppearanceLarge"
     /> 

        <TextView
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"   
    android:text="with your e-mail address"
    android:textSize="25sp"

     /> 


  </TableRow>  

答案 5 :(得分:0)

使用以下代码:

tvWeblink = ((TextView) findViewById(R.id.textView1));
tvWeblink.setClickable(true);
tvWeblink.setMovementMethod(LinkMovementMethod.getInstance());
String text = "or <a href=\"<your_login_url>\"> login </a> with your e-mail address.";
tvWeblink.setText(Html.fromHtml(text));

答案 6 :(得分:0)

使用Spannable字符串: -

TextView textView = (TextView)findViewById(R.id.mytextview01);
Spannable wordtoSpan = new SpannableString("or Login with your e-mail address");        
wordtoSpan.setSpan(new ForegroundColorSpan(Color.GREEN), 3, 8, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //3- start of character 8- end of character to apply forground color
textView.setText(wordtoSpan);

使用HTML字符串: -

为了获得更好的语言兼容性支持,请在res/values/strings

中添加字符串

值/串

<string name="Message">or<![CDATA[<font color='green'> Login</font>]]> with email address</string>

段:

textView.setText(Html.fromHtml(getString(R.strings.Message)));

答案 7 :(得分:0)

Check this one
<LinearLayout
    android:id="@+id/tableRow3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:weightSum="3" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:singleLine="true"
        android:text="or"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textSize="25sp" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:text="login"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="#54d66a"
        android:textSize="25sp" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:text="detail"
        android:textSize="25sp" />
</LinearLayout>