2017-10-26 7 views
0

私はコマンドhtmlのテキストとイメージでxmlを手に入れました。私はタグを取得するときにテキストの中にイメージを生成するimgが必要です。 IOSで彼も画像を識別し、ちょうど私がアンドロイドで私のコマンドで変更する必要がどのような画像イメージは私のhtmlテキストの真中にある

namespace A.Droid.Renderer 
{ 
    public class CustomLabelRenderer : LabelRenderer 
    { 
    protected LineSpacingLabel LineSpacingLabel { get; private set; } 

    protected override void OnElementChanged(ElementChangedEventArgs<Label> e) 
    { 
     base.OnElementChanged(e); 
     var label = (TextView)Control; 

     label.SetLineSpacing(11, 1); 
     label.TextFormatted = Html.FromHtml(Control.Text); 
     Control.MovementMethod = LinkMovementMethod.Instance; // Makes links clickable 
     this.UpdateLayout(); 
    } 
} 

}

のない小さな広場を示し、正しくアンドロイドで

namespace A.iOS.Renderer 
{ 
public class CustomLabelRenderer : LabelRenderer 
{ 
    protected LineSpacingLabel LineSpacingLabel { get; private set; } 

    protected override void OnElementChanged(ElementChangedEventArgs<Label> e) 
    { 
     base.OnElementChanged(e); 
     var attr = new NSAttributedStringDocumentAttributes(); 
     var nsError = new NSError(); 
     attr.DocumentType = NSDocumentType.HTML; 
     Control.AdjustsFontSizeToFitWidth = true; 
     var myHtmlData = NSData.FromString(Control.Text, NSStringEncoding.Unicode); 
     this.Control.AttributedText = new NSAttributedString(myHtmlData, attr, ref nsError); 
     this.Control.Font = UIFont.FromName("Lato", 20f); 
     Control.LineBreakMode = UILineBreakMode.Clip; 
    } 
    } 
} 

の作品私のイメージはラベルに表示されますか?

+0

あなたがHTMLに来た画像を表示したいですか? –

+0

はい、webviewを使用しないでもっと。むしろラベルを使用しています。イオスでは、画像がロードされていないことをAndroidのみで確認しました –

答えて

0

私はそれがあなたのために働くことを望みます。

のonCreate()

Spanned spannedValue = Html.fromHtml("Your Html", getImageHTML(), null); 
YourTextView.setText(spannedValue); 

機能:

public Html.ImageGetter getImageHTML() { 
    Html.ImageGetter imageGetter = new Html.ImageGetter() { 
     public Drawable getDrawable(String source) { 
      DownloadImageTask task = new DownloadImageTask(); 
      try { 
       return task.execute(new String[] { source }).get(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } catch (ExecutionException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 
    }; 
    return imageGetter; 
} 

private class DownloadImageTask extends AsyncTask<String, Void, Drawable> { 
    protected Drawable doInBackground(String... urls) { 
     for(String s : urls) { 
      try { 
       Drawable drawable = Drawable.createFromStream(new URL(s).openStream(), "src name"); 
       Display display = getWindowManager().getDefaultDisplay(); 
       Point size = new Point(); 
       display.getSize(size); 
       Integer width = size.x; 
       Integer height = size.y; 
       Integer heigtbol = height/3; 
       drawable.setBounds(0, 0, width, heigtbol); 

       return drawable; 
      } catch (IOException exception) { 
       Log.v("IOException", exception.getMessage()); 
       return null; 
      } 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Drawable drawable) { 
     super.onPostExecute(drawable); 
    } 
} 
関連する問題