2014-11-05 3 views
1

Я хотел бы разместить TextView и еще один View рядом с ним. Как это:Как разместить Вид справа от TextView

|        | 
|[TextView][View]    | 
|        | 

TextView может иметь длинный текст. В этом случае я хотел бы использовать многоточие, поэтому View не выталкивается из экрана (или какой-либо макет содержит их) и не деформируется.

|        | 
|[TextView with long...][View]| 
|        | 

Так я хочу View быть рядом с TextView в то время как TextView занимает столько места, сколько необходимо (и не больше, чем нужно), не толкая View из экрана/контейнера, когда текст слишком длинный (в этом случае я хотел бы вырезать текст с помощью многоточия).

Как я мог это сделать?

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

Спасибо!

ответ

2

Вы можете использовать LinearLayout с горизонтальной ориентацией, как blackbelt предложил, но установив его ширину wrap_content

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:maxLines="1" 
     android:ellipsize="end" 
     android:text="unknown sized view" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="fixed sized view"/> 
</LinearLayout> 
+0

Спасибо, человек! Это простое решение, которое я искал! Я не знал разницы в использовании весов с контейнером wrap_content или match_parent. –

2

Вы можете использовать горизонтальный LinearLayout с шириной math_parent, в котором содержится двое детей. Левый TextView будет иметь 0dp ширины и weight 1, вид будет иметь wrap_content для ширины. Для точек в конце концов вы можете использовать android:ellipsize

+0

Почти! В этом случае я бы имел '| [TextView short _______] [View] |', даже если текст TextView был коротким. Я хотел бы иметь '| [TextView short] [View] _______ |'. –

+0

Давайте продолжим обсуждение в чате (http: //chat.stackoverflow.ком/комнаты/64357/обсуждение промежуточности Vince-emigh-и-Ферран-maylinch). –

0

В родительской компоновке TextView и вида установите layout_weightsum = 3.

В TextView, установите layout_weight = 2 и в View, установите layout_weight = 1.

Независимо от длины текста в текстовом режиме, просмотр и текстовое изображение будут отображаться правильно.

+0

Таким образом, 'TextView' будет в два раза больше размера' View', и это не то, что я ищу. Я хочу, чтобы «TextView» занимал как можно больше места, а «Просмотр» - справа, полностью видимый и не искаженный. –

0

Вы можете использовать RelativeLayout с android:layout_toRightOf, в соответствии с RelativeLayout.LayoutParams на developerWorks.android.com это то же самое, что вы искали.

+0

Я пробовал это, но если 'TextView' слишком длинный,' View' не имеет места и выглядит сломанным, как этот: '| [TextView с длинным t ...] [V] |'. –

0

вы могли бы попытаться положить обе точки зрения в горизонтальной LinearLayout и установка андроида: MaxWidth для TextView, что способ View будет оставаться на правой стороне TextView, когда это коротко

| [TextView Короче говоря] [Посмотреть] _______ |

, и когда он длинный, TextView будет расширяться только до тех пор, пока вы установите максимальную ширину.

| [TextView with long t ...] [View] |

+0

Какова была бы ценность 'maxWidth'? –

+0

вы должны установить значение в зависимости от вашего дизайна и размера экрана. –

+0

Это то, что кажется сложным, поэтому я хотел бы избежать, как я говорю в своем вопросе. Есть ли у вас какие-либо идеи о том, как это сделать? Эти представления находятся внутри контейнера, и я не знаю размер View справа, потому что он имеет некоторый текст внутри (это другой TextView, на самом деле, но я хочу, чтобы он отображал полный текст без эллипсиса). –

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