Android - 用于文本的UI包装图像

时间:2010-03-18 23:19:34

标签: android

是否有将TextView包裹在图像周围? 这是人们在CSS中做的典型事情,如http://www.echoecho.com/htmlimages08.htm

谢谢,
三通

3 个答案:

答案 0 :(得分:15)

我为此编写了一个小部件: http://code.google.com/p/android-flowtextview/

enter image description here

此小部件扩展(因此表现得像)RelativeLayout,因此您可以添加子视图。该类公开了一个setText()方法,该方法允许您设置视图的文本(plain或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

如果您在使用此功能时遇到任何问题,请随时与我们联系,在我的个人资料中查找我的电子邮件

答案 1 :(得分:4)

为什么不使用WebView?您将来可以更自由地以这种方式自定义布局。

如果WebView对于您的用例来说太重了,您可能需要手动渲染文本和图像。您可以在this android-developers thread中找到一些相关信息。

答案 2 :(得分:0)

另一种实现此目的的方法是制作包含要显示的文本和图像的图像。显然更重的重量和解决方法。

您可以使用webview和变通方法来加载本地内容。从1.0 SDK开始,webview无法在没有这些文章中描述的解决方法的情况下加载本地内容:

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

Roman的链接是指一个线程,表示你不能用文本视图来做,所以这不是一个选项。