我想在同一行中设置三个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>
我可以知道实现目标的正确方法是什么?也许这个问题太基础了,但我找不到合适的解决方案。请帮帮我。
答案 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>