Расположение строк с текстом в двух значках - PullRequest
0 голосов
/ 28 января 2011

Мне нужен макет для строки (списка), которая содержит две ImageView и одну TextView (в середине). Оба изображения должны быть по краям экрана, а TextView должен заполнить пространство между ними. Моя проблема в том, что текст может быть задан динамически. Прямо сейчас я работаю с TableLayout и атрибутом android:stretchColumns, но возможно, что текст длиннее доступного размера, поэтому оба ImageView перемещаются за пределы экрана.

Может ли кто-нибудь предоставить мне макет, с устойчивым к длинным текстам?

Это должно выглядеть так: Visualisation of desired layout

Ответы [ 2 ]

0 голосов
/ 28 января 2011

Я бы попробовал поиграться с чем-то вроде XML ниже.Я не пробовал, но он основан на:

Макет:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:padding="6dip">

    <ImageView
        android:id="@+id/image1"
        android:src="@drawable/icon1"

        android:layout_width="wrap_content"
        android:layout_height="fill_parent"

        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="6dip"
    />

    <ImageView
        android:id="@+id/image2"
        android:src="@drawable/icon2"

        android:layout_width="wrap_content"
        android:layout_height="fill_parent"

        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="6dip"
    />

    <TextView  
        android:id="@+id/text"
        android:singleLine="true"
        android:ellipsize="marquee"

        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 

        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/image1"
        android:layout_toLeftOf="@id/image2"
    />

</RelativeLayout>
0 голосов
/ 28 января 2011

Использовать LinearLayout с FILL_PARENT; проверьте параметры веса макета. Вы должны установить ImageViews с помощью WRAP_CONTENT, TextView с FILL_PARENT. Затем примените некоторое значение веса макета (просто используйте «1») к TextView и посмотрите волшебную работу.

Редактировать: Пример:

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

<ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/add">
</ImageView>

<TextView android:id="@+id/TextView01" android:layout_height="wrap_content"
android:layout_width="fill_parent" android:layout_weight="1" 
android:text="as long as you wish">
</TextView>

<ImageView android:id="@+id/ImageView02" android:layout_width="wrap_content" 
android:layout_height="wrap_content" android:src="@drawable/add">
</ImageView>

</LinearLayout>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...