Android - интерфейс для обтекания текстом - PullRequest
8 голосов
/ 19 марта 2010

Есть ли способ обернуть TextView вокруг изображения? Это типичная вещь, которую люди делают в CSS, как это http://www.echoecho.com/htmlimages08.htm

Спасибо,
Тройник

Ответы [ 3 ]

15 голосов
/ 19 октября 2012

Я написал виджет для этого: http://code.google.com/p/android-flowtextview/

enter image description here

Этот виджет расширяет (и, следовательно, ведет себя как) RelativeLayout, так что вы можете добавлять дочерние представления. Класс предоставляет метод setText (), который позволяет вам установить текст представления (обычный или spannable), а затем вы вызываете invalidate () для отображения текста. Текст заполнит любое пространство, оставленное дочерними представлениями.

Пример использования:

 <com.pagesuite.flowtext.FlowTextView
            android:id="@+id/tv"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:padding="10dip"
                android:src="@drawable/android" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_marginTop="400dip"
                android:padding="10dip"
                android:src="@drawable/android2" />
        </com.pagesuite.flowtext.FlowTextView>

Тогда в вашем коде:

tv = (FlowTextView) findViewById(R.id.tv);              
Spanned spannable = Html.fromHtml("<html ... </html>");
tv.setText(spannable);  // using html
tv.setText("my string"); // using plain text    
tv.invalidate(); // call this to render the text

Всегда рад помочь, если у вас возникли проблемы с этим, найдите мой адрес электронной почты в моем профиле

4 голосов
/ 19 марта 2010

Почему бы просто не использовать WebView? В будущем у вас будет больше свободы для настройки макета таким образом.

Если WebView слишком тяжелый для вашего случая использования, вам, вероятно, придется визуализировать текст и изображение вручную. Вы можете найти соответствующую информацию в этой ветке для разработчиков Android .

0 голосов
/ 27 марта 2010

Еще один способ сделать это - создать изображение, содержащее текст и изображения, которые вы хотите отобразить. Очевидно, более тяжелый вес и обходной путь.

Это можно сделать с помощью веб-просмотра и обходного пути для загрузки локального контента. Начиная с версии 1.0 SDK веб-просмотр не может загружать локальный контент без обходных путей, описанных в этих статьях:

http://www.techjini.com/blog/2009/01/10/android-tip-1-contentprovider-accessing-local-file-system-from-webview-showing-image-in-webview-using-content/

и

http://blog.tourizo.com/2009/02/how-to-display-local-file-in-android.html

Ссылка Романа на ветку, в которой говорится, что вы не можете сделать это с помощью текстового представления, так что на данный момент это не вариант.

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