Html.fromHtml通过URl显示图像和文本

时间:2019-06-28 05:47:00

标签: java android

{
    "news_content": [
                "<p<table class=\"tplCaption\" style=\"padding-left: 30px;\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\" align=\"center\">\r\n<tbody>\r\n<tr>\r\n<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>\r\n</tr>\r\n<tr>\r\n<td>\r\n<p class=\"Image\">Tổng thống Mỹ Donald Trump. Ảnh:&nbsp;<em>AP</em>.</p>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n",
                "<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>\r\n<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>\r\n",
                "<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>\r\n<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>\r\n",
                "<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>\r\n<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>\r\n",
                "<p class=\"Normal\"><strong>Huyền L&ecirc;</strong>&nbsp;(Theo&nbsp;<em>CNN</em></p>"
            ],
            "news_status": 1
}

2 个答案:

答案 0 :(得分: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) {

        }}

答案 1 :(得分:0)

像这样使用-

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());

 }

}