2016-10-07 2 views
0

Я пытаюсь создать элемент listview, который состоит из текстового представления и кнопки по горизонтали. Я хочу, чтобы текстовое изображение было слева, а кнопка - справа. Кнопка всегда имеет одинаковый размер, поэтому я хочу, чтобы текстовое изображение занимало остальную часть пространства.Xamarin Android textview в пределах

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

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

Можно ли настроить мое представление для обработки этого или мне нужно делать все виды измерения ширины и длины экрана и т. Д.?

Вот мой ListView элемент XAML:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:stretchColumns="0"> 
<TableRow> 
    <TextView 
     android:id="@+id/tv_item_text" 
     android:text="(123456) Item Name" 
     android:paddingLeft="10dip" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="fill_vertical" 
     android:gravity="fill_vertical" 
     /> 
    <Button 
     android:id="@+id/btn_go" 
     android:layout_width="wrap_content" 
     android:text="Go" 
     android:textColor="@android:color/holo_blue_dark" 
     android:layout_gravity="fill_vertical" 
     android:gravity="center" 
     android:visibility="visible" /> 
</TableRow> 

Я довольно новыми для Xamarin, так что если кто-нибудь может помочь мне было бы очень высокую оценку.

/Aidal

+0

Почему вы используете TableLayout? – Cheesebaron

ответ

1

Я действительно не понимаю, почему люди думают, используя TableLayout и гнездо TableRow внутри это хорошая практика для элементов ListView/RecyclerView ...

Почему вы не используете RelativeLayout, который говорит кнопке, чтобы она была справа, и чтобы текст отображал всю оставшуюся часть пространства?

должен выглядеть примерно так:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="50dp"> 
    <Button 
     android:id="@+id/btn_go" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:text="Go" 
     android:textColor="@android:color/holo_blue_dark" 
     android:layout_alignParentRight="true" /> 
    <TextView 
     android:id="@+id/tv_item_left" 
     android:layout_width="match_match" 
     android:layout_height="match_parent" 
     android:layout_toLeftOf="@id/btn_go" 
     android:layout_alignParentLeft="true" /> 
</RelativeLayout> 
+0

Это похоже на работу, спасибо. и я думаю, что ответ на ваш вопрос лежит в последней строке моего сообщения. – Aidal

+0

Как и в HTML, Markdown и т. Д. Таблицы должны использоваться для контента, а не для размещения макетов. – Cheesebaron

+0

Хотя это визуально работает, есть еще что-то, что мне нужно сделать, чтобы оно работало по назначению. Предполагается, что это макет для элемента ListView, поэтому я предполагаю, что мне нужно что-то сделать, чтобы уловить щелчок за кнопкой и кнопкой, потому что прямо сейчас я не могу поймать ни одно из событий просто используя ListView.ItemClick. Я предполагаю, что мне нужно сделать переопределение в ListViewAdapter? – Aidal