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

Android:如何根据文本长度对齐两个文本视图,android,layout,Android,Layout,我有一个布局,其中两个文本视图将显示在同一行上,以便 如果TextView1是短文本,则TextView2应直接位于TextView1(图像1)的右侧,如果TextView1是长文本,则TextView2应位于同一行(图像2)布局的右角 如何实现这一点?使用这样的布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativeL

我有一个布局,其中两个文本视图将显示在同一行上,以便

如果TextView1是短文本,则TextView2应直接位于TextView1(图像1)的右侧,如果TextView1是长文本,则TextView2应位于同一行(图像2)布局的右角


如何实现这一点?

使用这样的布局

      <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将把edittext 2推到右侧…具体取决于其中的文本。

使用如下布局

      <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推到右侧…具体取决于其中的文本。

您可以为第一个文本视图设置
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"
    />


您可以为第一个文本视图设置
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"
    />

编辑:

我显然误解了(或没有完全理解)你的问题。只要不介意我的回答——我投mxy的票:)

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

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

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

链接:

编辑:

我显然误解了(或没有完全理解)你的问题。只要不介意我的回答——我投mxy的票:)

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

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

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

链接:


我在android:layout\u-weight属性中使用了简单的水平线性布局,它工作起来就像你想要的一样。 例如:


我在android:layout\u-weight属性中使用了简单的水平线性布局,它可以按照您的意愿工作。 例如:



这里发生的情况是,如果TextView1是长文本,它将TextView2推到最右边,而TextView2不可见。如果TextView1很小,则TextView2在这里可见。这里发生的情况是,如果TextView1是长文本,它将TextView2推到最右边,而TextView2不可见。如果TextView1很小,然后TextView2在这里可见。保留maxwidth的硬编码值对我来说很有用。但我可以根据TextView2的长度进行调整吗。因为所有的设备都没有相同的宽度布局。保留maxwidth的硬编码值对我来说很有用。但是我可以根据TextView2的长度来调整它吗。因为所有的设备都没有相同的宽度布局。TextView2只是停留在父视图的右边框上,而不管Text1的长度如何。即使text1的长度很小,text2也会粘在父视图的右边框上。无论text1的长度如何,TextView2都会粘在父视图的右边框上。即使text1的长度很小,text2也会粘在父视图的右边框上。