Android - 将展位固定尺寸和动态尺寸视图放在行中

时间:2012-06-14 14:54:56

标签: android

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

像这样:

What I want to get

我真正得到的是:

What I'm really getting

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

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"
        />

1 个答案:

答案 0 :(得分: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放在父级的右边缘。

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

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