3

我有一个动态大小的 RelativeLayout,其中包含带有任意文本的 TextView。我也有固定大小的带有时间戳的 TextView。我想将带有时间戳的 RelativeLayout 和 TextView 并排放置在一行中。

像这样:

我想得到什么

我真正得到的是:

我真正得到的

如您所见,带有文本的布局仅占整个宽度。

XML:

    <RelativeLayout android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/news_list_element"
                android:layout_marginRight="5dip"
                android:layout_alignParentLeft="true"
                android:focusable="false"
                android:paddingRight="8dip"
                android:paddingLeft="17dip"
                android:paddingTop="4dip"
                android:paddingBottom="4dip">
    <TextView android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:id="@+id/news_list_text"
              android:background="@android:color/transparent"
              android:textColor="#000000"
              android:focusable="false"
              android:padding="3dip"
            />
</RelativeLayout>
<TextView android:id="@+id/messages_dialog_timestamp_in"
          android:background="#000000"
          android:text="12:05"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:layout_toRightOf="@id/news_list_element"
          android:paddingBottom="9dip"
          android:paddingLeft="0dip"
          android:textColor="#8f9eac"
        />
4

1 回答 1

1

试试这个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <TextView 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:id="@+id/news_list_text" 
        android:background="@android:color/transparent" 
        android:textColor="#000000" 
        android:focusable="false" 
        android:padding="3dip" 
        android:layout_weight="1"
        android:layout_gravity="left"
    /> 
    <TextView android:id="@+id/messages_dialog_timestamp_in" 
        android:background="#000000" 
        android:text="12:05" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:paddingBottom="9dip" 
        android:paddingLeft="0dip" 
        android:textColor="#8f9eac" 
        android:layout_gravity="right"
    /> 

android:layout_gravity="left"将使消息 TextView 从父级的左边缘开始。

android:layout_gravity="right"会将时间戳 Textview 放在父级的右边缘。

与消息 TextView 中的android:layout_width="0dp"结合android:layout_weight="1"将导致它在所有其他小部件就位扩展以填充所有剩余空间并留出所需的空间(因此它不会将时间戳从屏幕上推出)。

此布局将与您显示的内容略有不同,因为即使有短消息,Textview 区域也会扩展以填充可用空间并使时间戳全部显示在右边缘的垂直线上(这看起来更整洁 IMO)。

于 2012-06-14T15:25:12.650 回答