2012-06-14 4 views
3

У меня есть динамический размер RelativeLayout, содержащий TextView с произвольным текстом. Также у меня есть фиксированный размер TextView с меткой времени. Я хочу разместить как RelativeLayout, так и TextView с меткой времени в одной строке, рядом.Android - размещение фиксированного размера и динамического размера стенда в строке

Как это:

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

Попробуйте это:

<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" в сочетании с android:layout_weight="1" в сообщении TextView заставит его расширить, чтобы заполнить все оставшееся пространство после все остальные виджеты находятся на месте и иметь их требуемое пространство выделить (так что он не будет толкать метку времени от экран).

Этот макет будет немного отличаться от того, что вы показываете, даже с короткими сообщениями область текста будет расширяться, чтобы заполнить доступное пространство и сделать отметки времени, которые отображаются в вертикальной линии на правом краю (что будет выглядеть более аккуратно IMO).