He resuelto un caso de uso equivalente al introducir un ScaleDrawable
y anulando su .getIntrisicHeight()
de modo que sea al menos la altura TextView
. La parte TextView.addOnLayoutChangeListener
, necesario para volver a vincular el Drawable
en un cambio de tamaño TextView
trabaja con API11 +
Drawable underlyingDrawable =
new BitmapDrawable(context.getResources(), result);
// Wrap to scale up to the TextView height
final ScaleDrawable scaledLeft =
new ScaleDrawable(underlyingDrawable, Gravity.CENTER, 1F, 1F) {
// Give this drawable a height being at
// least the TextView height. It will be
// used by
// TextView.setCompoundDrawablesWithIntrinsicBounds
public int getIntrinsicHeight() {
return Math.max(super.getIntrinsicHeight(),
competitorView.getHeight());
};
};
// Set explicitly level else the default value
// (0) will prevent .draw to effectively draw
// the underlying Drawable
scaledLeft.setLevel(10000);
// Set the drawable as a component of the
// TextView
competitorView.setCompoundDrawablesWithIntrinsicBounds(
scaledLeft, null, null, null);
// If the text is changed, we need to
// re-register the Drawable to recompute the
// bounds given the new TextView height
competitorView.addOnLayoutChangeListener(new OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right,
int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
competitorView.setCompoundDrawablesWithIntrinsicBounds(scaledLeft, null, null, null);
}
});
uso este enlace: [editar] dibujables compuestos de texto (http://stackoverflow.com/questions/5471026/edittext-with-non-selectable-grayed-out -prefix) –
puede modificar lo siguiente para la vista de texto. También los parámetros para setCompound dibujable tienen opción para dibujar a la derecha, drawable left.void android.widget. Vista de texto.setCompoundDrawables (Drawable left, Drawable top, Drawable right, Drawable bottom) –
gracias :) pero no funciona, la imagen aún no se puede estirar. Intento establecer el límite dibujable utilizando la altura de vista de texto (textview.getHeight()), pero devuelve la altura de diseño de vista de texto no la altura actual. – hakim