Android ImageGetter images overlapping text

后端 未结 5 1396
一个人的身影
一个人的身影 2020-12-01 04:14

I\'m trying to load a block of HTML into a TextView, including images, using

URLImageParser p = new URLImageParser(articleBody, this);
Spanned htmlSpan = Ht         


        
5条回答
  •  青春惊慌失措
    2020-12-01 04:39

    I found a interesting behavior with those solutions: if the loading of an image is to fast and the textview has not been rendered yet (e.g. I use Okhttp with caching, so the second call is quite fast), the textview size is 0.

    To resolve this issue, I had converted the ImageGetter back from the AsyncTask and instead start a AsyncTask which creates the Spanned for my TextView and sets the text afterwards.

    With this solution it's not required to resize the TextView each time an Image is loaded.

    new AsyncTask() {
          TextView tv;
          @Override
          protected Spanned doInBackground(TextView... params) {
            tv = params[0];
            return Html.fromHtml(feedEntry.getContent(),
                    new HttpImageGetter(getActivity(), HttpLoaderImpl.getInstance(getActivity())),
                    new Html.TagHandler() {
    
                      @Override
                      public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
                        //do nothing...
                      }
                    });
          }
    
          @Override
          protected void onPostExecute(final Spanned result) {
            new Handler(Looper.getMainLooper()).post(new Runnable() {
    
              @Override
              public void run() {
                tv.setText(result);
              }
            });
          }
        }.execute(textView);
    

提交回复
热议问题