1. Black Friday Sale - 50% off

    B4A Standard for $29 instead of $59!
    Buy Now
    Dismiss Notice

Android Code Snippet Spannable Text to HTML

Discussion in 'Code Snippets' started by Marcos Alves, Feb 17, 2019.

  1. Marcos Alves

    Marcos Alves Active Member Licensed User

    Recently I faced a problem involving spannable text where I needed to store an EditText content and later restore in a new View on screen.
    It is a hard job as you can't store a formatted spannable text in a database or in a flat text. The solution is to convert the EditText content to html , store, and then convert again from html and show.
    There are two Android java function those we can use to do this:
    ToHtml
    FromHtml

    With a small implementation and the help of @Erel I developed a small java routine that could be useful to store and recover spannable texts, maintaining the types formatting. Attached also an apk with a sample code using the routine. To test:
    - Open a formatted text in any app (browser, e-mail, etc)
    - Copy the text
    - Paste in the bottom edittext
    - Click the button
    - The formatted text will be copied to the edittext on the top

    You can see that in the code there is a string variable called html... this could be stored in any string field using sqlite or even in a text file and recovered later... with the method fromHtml you can also convert a html text to spannable and use as a text in an edittext.
    LIMITATIONS: not all html methods are implemented in Android... also, the alignment is lost when converting to html.

    Code:
    Sub Button1_Click
       
        
    Dim Jo As JavaObject
        Jo.InitializeContext

        
    Dim Cs As CSBuilder
        Cs.Initialize.Append(GetCharSequenceFromEditText(EditText2))
        
    Dim Html As String

        Html = Jo.RunMethod(
    "toHtml",Array(GetCharSequenceFromEditText(EditText2)))

        EditText1.Text = Jo.RunMethod(
    "fromHtml",Array(Html))

    End Sub

    Sub GetCharSequenceFromEditText(et As EditTextAs Object
       
        
    Dim jo As JavaObject = et
        
    Dim Test As Object
        Test = jo.RunMethod(
    "getText"Null)
        
    Return jo.RunMethod("getText"Null)
       
    End Sub

    #If Java
    import android.widget.TextView;
    import android.text.Html;
    import android.text.Spannable;
    import android.text.Spanned;

        public static String toHtml(Spannable sourceText) {
           
            String genHtm = Html.toHtml(sourceText);
            return genHtm;
           
        }
       
        public static Spanned fromHtml(String htmlString) {
       
             Spanned returnView = Html.fromHtml(htmlString);
            return returnView;
        }
       
    #End If
     

    Attached Files:

    fredo, asales, Erel and 2 others like this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice