Android - UI for text wrap an image

后端 未结 3 1984
旧巷少年郎
旧巷少年郎 2020-12-09 06:10

Is there anyway to wrap a TextView around an image? It\'s the typical thing that people do in CSS like this http://www.echoecho.com/htmlimages08.htm

Thanks,
Tee<

相关标签:
3条回答
  • 2020-12-09 06:42

    Why not just use a WebView? You'll have more freedom in the future to customize the layout that way.

    If a WebView is too heavyweight for your use case, you'll probably need to render the text and image manually. You may find some relevant information in this android-developers thread.

    0 讨论(0)
  • 2020-12-09 06:52

    Another way to accomplish this is to make a image containing the text and the images you want displayed. Obviously heavier weight and a workaround.

    You can do this using webview and a workaround to load local content. As of the 1.0 SDK the webview cant load local content without the work arounds described in these articles:

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

    and

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

    Roman's link is to a thread that says you can't do it with text view, so that's not an option at this point.

    0 讨论(0)
  • 2020-12-09 07:02

    I've written a widget for this: http://code.google.com/p/android-flowtextview/

    enter image description here

    This widget extends (and therefore behaves like) a RelativeLayout so you can add child views. The class exposes a setText() method which allows you to set the view's text (plain or spannable) and then you call invalidate() to render the text. The text will fill in any space left by the child views.

    Example usage:

     <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>
    

    Then in your code:

    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
    

    Always happy to assist if you have any problems using this, find my email on my profile

    0 讨论(0)
提交回复
热议问题