0

Как видно на рисунке ниже, мне нужен макет, где Textview, содержащий содержимое «Hello» и макет «2», всегда отображается и находится между ними раскладка '1' и ']'Как иметь макет рядом с TextView таким образом, что он всегда будет виден и близок к текстовому окну

{1}Hello{2} ]
{1}Hello I..{2}]

Если TextView содержимое слишком долго они должны ellipsize Layout '2' не должны быть выровнены по правому краю к родителю или ']', но быть рядом с TextView

Я пробовал играть с визами и относительной компоновкой, но не знаю чтобы получить рабочее решение.

Любые идеи/указатели?

Вот slimdown версия моего макета

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/simple_white_button" 
    android:orientation="horizontal" > 

    <RelativeLayout 
     android:id="@+id/topLayout1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.85" 
     android:paddingBottom="5dp" 
     android:paddingLeft="5dp" 
     android:paddingTop="5dp" > 

     <ImageView 
      android:id="@+id/photo" 
      android:layout_width="75dp" 
      android:layout_height="75dp" 
      android:scaleType="centerCrop" 
      android:src="@drawable/headshot_alt" 
      android:visibility="visible" /> 

     <LinearLayout 
      android:id="@+id/myRow" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@id/photo" > 

      <TextView 
       android:id="@+id/address" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="5dp" 
       android:layout_marginTop="2dp" 
       android:ellipsize="end" 
       android:singleLine="true" 
       android:text="New Jersey" 
       android:textColor="@color/grey_text" 
       android:textSize="16sp" /> 

      <LinearLayout 
       android:id="@+id/weather" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_vertical" 
       android:layout_marginTop="2dp" 
       android:layout_weight="1" 
       android:gravity="left" > 

       <!-- Weather --> 

       <ImageView 
        android:id="@+id/imgWeather" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/ic_notification_news" 
        android:visibility="visible" /> 

       <TextView 
        android:id="@+id/txtWeather" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_vertical" 
        android:layout_marginLeft="3dp" 
        android:gravity="center_vertical" 
        android:text="50/43" 
        android:textColor="@color/text_dark" 
        android:textSize="13sp" 
        android:visibility="visible" /> 
      </LinearLayout> 
     </LinearLayout> 
    </RelativeLayout> 

    <LinearLayout 
     android:id="@+id/menu" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.15" 
     android:background="@drawable/simple_white_button" 
     android:gravity="center" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/menu_icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:scaleType="center" 
      android:src="@drawable/ic_quickaction_default" /> 
    </LinearLayout> 
</LinearLayout> 

Где {1} будет Ид = фото,] это идентификатор = меню и ID = myRow является TextView + погода расположение я хочу между фото и меню. Я предпочитаю не устанавливать максимальную ширину в моем текстовом виде адреса, в худшем случае я хочу, чтобы он был эллипсисом, когда погода касается меню. Но когда адрес мал, я хочу, чтобы погода была рядом с адресом, а не рядом с меню.

Надеюсь, его немного более теперь ясно

ответ

0

В относительном плане, с фиксированной шириной для TextView, Layout'2' , как layout_toRightOf TextView, что-то вроде этого:

<TextView 
     android:id="@+id/firstText" 
     android:layout_width="60dp" 
     android:layout_height="wrap_content" 
     android:background="@android:color/white" 
     android:text="Hello String" 
     android:lines="1" 
     android:ellipsize="end" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/layoutTwo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/firstText" 
     android:background="@android:color/white" 
     android:text="Layout 2" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 


</RelativeLayout> 

Обеспечить расположение контейнера, как в ваше требование. С шириной fill_parent вы можете настроить «]» на крайний правый или xdp после макета 2
Можете ли вы точно указать, что требуется ... i'l изменить мой ответ

+0

Спасибо за глядя на это, я добавил дополнительную информацию в свой пост, я хотел бы, чтобы текстовое изображение не имело фиксированной ширины, оно должно быть небольшим, если данные меньше, а ширина родительской ширины-ширины в случае, если адрес слишком длинный – aarati

+0

@aarati can вы публикуете снимок экрана о том, что происходит, и отмечайте его тем, что требуется, из xml ... если вы хотите, чтобы ваш текст был эллипсирован. Я думаю, что это произойдет только в том случае, если есть фиксированная ширина или упомянуто, что это должно быть ограниченное количество строк с определенной шириной. Помещение «]» в крайнем правом случае в противном случае получило бы то, что вы хотите, не играя с весами – user2450263

Смежные вопросы