html.fromhtml通过URL显示图像和文本


{
    "news_content": [
                "<p<table class="tplCaption" style="padding-left: 30px;" border="0" cellspacing="0" cellpadding="3" align="center">rn<tbody>rn<tr>rn<td><img src="https://i-vnexpress.vnecdn.net/2019/06/06/trump-1571-1559784498.jpg" alt="Tổng thống Mỹ Donald Trump. Ảnh: AP." data-natural-h="334" data-natural-width="500" data-width="500" data-pwidth="500" /></td>rn</tr>rn<tr>rn<td>rn<p class="Image">Tổng thống Mỹ Donald Trump. Ảnh:&nbsp;<em>AP</em>.</p>rn</td>rn</tr>rn</tbody>rn</table>rn",
                "<p class="Normal">"Th&agrave;nh thật m&agrave; n&oacute;i t&ocirc;i chưa bao giờ l&agrave; người ủng hộ cuộc chiến đ&oacute;. T&ocirc;i nghĩ cuộc chiến đ&oacute; rất tồi tệ. T&ocirc;i nghĩ Việt Nam ở rất xa v&agrave; khi đ&oacute; &iacute;t người biết về đất nước n&agrave;y", Tổng thống Mỹ Donald Trump ng&agrave;y 5/6 đề cập đến cuộc chiến tranh ở Việt Nam khi trả lời phỏng vấn nh&agrave; b&aacute;o Anh Piers Morgan về việc liệu &ocirc;ng c&oacute; thể v&agrave; c&oacute; muốn phục vụ trong qu&acirc;n đội hay kh&ocirc;ng.</p>rn<p class="Normal">C&acirc;u trả lời của Tổng thống Trump phần n&agrave;o phản &aacute;nh quan điểm của người d&acirc;n Mỹ đối với cuộc chiến phi nghĩa ở Việt Nam v&agrave;o thập ni&ecirc;n 1960 v&agrave; 1970, khi nhiều cuộc biểu t&igrave;nh nổ ra tr&ecirc;n khắp nước Mỹ phản đối việc đưa lực lượng qu&acirc;n sự tới can thiệp ở quốc gia Đ&ocirc;ng Nam &Aacute; n&agrave;y.</p>rn",
                "<p class="Normal">"Khi đ&oacute; chẳng ai n&oacute;i ch&uacute;ng ta đang l&agrave;m g&igrave;, rất nhiều người đ&atilde; chết. Điều n&agrave;y kh&ocirc;ng giống t&ocirc;i chiến đấu với Đức Quốc x&atilde;, chống lại Hitler. Cũng như nhiều người, khi đ&oacute; t&ocirc;i kh&ocirc;ng xuống đường biểu t&igrave;nh, t&ocirc;i cũng kh&ocirc;ng n&oacute;i sẽ chuyển đến Canada sống. Nhưng t&ocirc;i kh&ocirc;ng phải người ủng hộ cuộc chiến đ&oacute;. Ch&uacute;ng ta lẽ ra kh&ocirc;ng n&ecirc;n tham chiến", Tổng thống Mỹ n&oacute;i.</p>rn<p class="Normal">&Ocirc;ng khẳng định rằng ng&agrave;y nay người d&acirc;n Việt Nam sống rất tốt v&agrave; ch&iacute;nh phủ Việt Nam đ&atilde; thương thuyết rất th&agrave;nh c&ocirc;ng trong vấn đề thương mại to&agrave;n cầu.</p>rn",
                "<p class="Normal">Trong thời kỳ Mỹ tham chiến ở Việt Nam, Trump từng 4 lần được miễn qu&acirc;n dịch để ho&agrave;n th&agrave;nh chương tr&igrave;nh đại học. Sau khi tốt nghiệp Đại học Pennsylvania năm 1968, &ocirc;ng được cấp giấy chứng nhận bị gai xương g&oacute;t ch&acirc;n v&agrave; kh&ocirc;ng phải nhập ngũ.</p>rn<p class="Normal">Trump cũng n&oacute;i rằng &ocirc;ng đ&atilde; b&ugrave; đắp cho việc kh&ocirc;ng phục vụ trong qu&acirc;n đội bằng c&aacute;ch x&acirc;y dựng sức mạnh lực lượng vũ trang Mỹ hiện nay. "Năm ngo&aacute;i t&ocirc;i duyệt ng&acirc;n s&aacute;ch 700 tỷ USD v&agrave; năm nay l&agrave; 716 tỷ USD. T&ocirc;i đang b&ugrave; đắp nhanh ch&oacute;ng v&igrave; ch&uacute;ng t&ocirc;i đang t&aacute;i x&acirc;y dựng qu&acirc;n đội ở mức chưa từng c&oacute;", Trump n&oacute;i.</p>rn",
                "<p class="Normal"><strong>Huyền L&ecirc;</strong>&nbsp;(Theo&nbsp;<em>CNN</em></p>"
            ],
            "news_status": 1
}
TextView content = mView.findViewById(R.id.content);
String myHtml = "This will display an image to the right <img src='https://i-vnexpress.vnecdn.net/2019/06/06/trump-1571-1559784498.jpg' />";

content.setText(Html.fromHtml(myHtml, Images, null));

    private Html.ImageGetter Images = new Html.ImageGetter() {
        public Drawable getDrawable(String source) {
            Drawable drawable = null;
            FetchImageUrl fiu = new FetchImageUrl(getActivity(),source);
            try {
                fiu.execute().get();
                drawable = fiu.GetImage();
            }
            catch (Exception e) {
                drawable = getResources().getDrawable(R.drawable.default_icon);
            }
            // to display image,center of screen
            if(drawable!=null) {
                int imgH = drawable.getIntrinsicHeight();
                int imgW = drawable.getIntrinsicWidth();
                int padding = 20;
                int realWidth = 700; //ScreenW-(2*padding);
                int realHeight = imgH * realWidth / imgW;
                drawable.setBounds(padding, 0, realWidth, realHeight);
            }
            return drawable;
        }
    };

    public class FetchImageUrl extends AsyncTask<String, String, Boolean> {

        String imageUrl;
        Context context;
        protected Drawable image;
        public FetchImageUrl(Context context, String url)
        {
            this.imageUrl = url;
            image = null;
            this.context = context;
        }
        public Drawable GetImage()
        {
            return image;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
        @Override
        protected Boolean doInBackground(String... args) {
            try {
                InputStream input_stream = (InputStream) new URL(imageUrl).getContent();
                image = Drawable.createFromStream(input_stream, "src name");
                return true;
            }
            catch (Exception e)
            {
                image = null;
            }
            return false;
        }

        @Override
        protected void onPostExecute(Boolean result) {
        }}

使用这样的使用 -

String htmlString = "<img src='ic_launcher'><i>Welcome to<i> <b><a href='http://android-coding.blogspot.com'>Android Coding</a></b>";
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  TextView htmlTextView = new TextView(this);
  setContentView(htmlTextView);
  htmlTextView.setText(Html.fromHtml(htmlString, new Html.ImageGetter(){
   @Override
   public Drawable getDrawable(String source) {
    Drawable drawable;
    int dourceId = 
      getApplicationContext()
      .getResources()
      .getIdentifier(source, "drawable", getPackageName());
    drawable = 
      getApplicationContext()
      .getResources()
      .getDrawable(dourceId);
    drawable.setBounds(
      0, 
      0, 
      drawable.getIntrinsicWidth(),
      drawable.getIntrinsicHeight());
    return drawable;
   }
  }, null));
  htmlTextView.setMovementMethod(LinkMovementMethod.getInstance());
 }
}

最新更新