2 Stimmen

Wie kann ich ein Drawable verkleinern, um die Breite eines TextViews anzupassen?

Ich render etwas HTML mit Bild-Tags innerhalb eines TextView. Ich habe erfolglos versucht, die Bilder innerhalb des getDrawable() Codes zu skalieren. Der Code sieht ungefähr so aus.

myTextView.setText(Html.fromHtml(htmlSource, this, this));
@Override public Drawable getDrawable(String url) {
  Drawable.createFromStream((InputStream) new URL(url).getContent(), null);
}

Große Bilder passen sich nicht der Bildschirmbreite an. Stattdessen sehe ich nur den linken Teil des Bildes, während der Rest des Bildes abgeschnitten ist. Wie kann ich die Bilder verkleinern, damit sie auf den Bildschirm passen?

Mein Layout sieht so aus:

3voto

Jeff Axelrod Punkte 26503

So habe ich es gemacht:

@Override public Drawable getDrawable(String url) {
  Drawable drawable = 
     Drawable.createFromStream((InputStream) new URL(url).getContent(), null);
  final float scalingFactor = 
     (float)textView.getMeasuredWidth() / d.getIntrinsicWidth();
  d.setBounds(0, 0, textView.getMeasuredWidth(), 
     (int) (d.getIntrinsicHeight()*scalingFactor));
}

Ich habe jedoch festgestellt, dass diese Technik manchmal versagt, weil der TextView noch nicht gerendert wurde und getIntrinsicWidth 0 zurückgibt. Ich habe noch keine Lösung, aber wenn Sie diesen Code verwenden, sollten Sie es selbst überprüfen mit einigen Protokollierungen. Manchmal werden Sie Division durch Null Ausnahmen sehen...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X