Android:如何根据文本长度对齐两个文本视图

时间:2012-04-25 09:39:17

标签: android layout

我有一个布局,其中两个TextView将显示在同一行上,以便

如果TextView1是一个短文本,TextView2应该直接到TextView1(IMAGE1),如果TextView1是一个长文本,TextView2应该在同一行(IMAGE2)上的Layout的右下角

enter image description here

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分: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推到右侧......取决于其中的文字..

答案 1 :(得分: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"
    />

答案 2 :(得分:0)

编辑:

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

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

我假设您需要两个不同的TextView,因为您希望它们具有不同的颜色(或大小,样式或字体)。 我们的想法是为整个事物使用单个TextView,并在对视图执行setText之前准备一个SpannableString。

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

链接:

Setting font color at runtime

TextAppearanceSpan sample

答案 3 :(得分:0)

我使用简单的水平LinearLayout和android: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>