2012-04-25 51 views
1

我有一个布局,其中两个TextViews是在同一直线上,使得安卓:如何根据文本

如果TextView1是一个简短的文字,TextView2应立即有权被显示的长度对齐两个文本的意见到TextView1(IMAGE1),如果TextView1是一个长期的文字,TextView2应该是在同一行(IMAGE2)布局的右上角

enter image description here

我怎样才能做到这一点?

回答

0

使用布局这样的..

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 

     <requestFocus /> 
    </EditText> 

    <EditText 
     android:id="@+id/editText2" 
     android:layout_width="100dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="38dp" 
     android:layout_toRightOf="@+id/editText1" /> 

</RelativeLayout> 

的EditText 1将推动edittext2其右......取决于它的文本..

+0

这里发生的事情是,如果TextView1很长的文字,它是推动TextView2到最右边的那个TextView2不visible.If TextView1小,则TextView2在这里看到。 – 2012-04-25 10:05:48

0

您可以设置android:maxWidth属性第一个文本视图。所以,你的布局是这样的:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:maxWidth="200dp" 
    android:text="sdfksdofsdfsdfsdfsadfgwagrswargweqrgeqrgqwergeqrgeqrg" 
    /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/textView1" 
    android:text="text2" 
    /> 

+0

保持最大宽度的硬编码值适用于我。但是,我可以根据TextView2的长度对其进行调整。因为所有设备都没有相同的宽度布局。 – 2012-04-25 10:08:49

0

编辑:

我显然是误读(或没有完全读取)你的问题。只是不介意我的回答 - 我投mxy的:)

上次我有同样的问题,我无法找到或破解一个简单的解决方案。计算像素不是一种选择(至少不适合我)。但是我发现了一种解决方法,最终导致了相同的显示概念,那就是使用SpannableStringBuilder

正如我假设你想要两个不同的TextViews,因为你希望他们有不同的颜色(或尺寸,或风格,或字体)。 这个想法是为整个事情使用单个TextView,并在您的视图上做setText之前准备一个SpannableString。

通过使用ForegroundColorSpan,TextAppearanceSpan等的组合,您可以使单个TextView看起来像不同的具有不同样式的TextView,并排坐在一起,根据需要包装到下一行。

链接:

Setting font color at runtime

TextAppearanceSpan sample

0

我用的android简单的水平的LinearLayout:layout_weight属性和它的工作就像你想要的。 例子:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal"> 

<TextView 
    android:id="@+id/text1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:text="teeeeeeeext1"/> 

<TextView 
    android:id="@+id/text2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="text2"/> 
</LinearLayout> 
+0

无论Text1的长度如何,TextView2都只是粘在父视图的右边框上。即使text1的长度很小,text2也会粘在父视图的右边界上。 – 2012-04-25 11:03:18