Рассчитать размер изображения при использовании setCompoundDrawables для EditText

Когда я добавляю значок, как показано ниже:

etComment = (EditText) findViewById(R.id.et_comment); Drawable img = getResources().getDrawable( R.drawable.warning ); etComment.setCompoundDrawablesWithIntrinsicBounds( img, null, null, null ); 

Введите описание изображения здесьВведите описание изображения здесь

Значок изменяет размер EditText. Как я могу вычислить размер img и поместить его в EditText без изменения размера EditText?

Благодаря!


FunkTheMonk
Используйте setCompounDrawables () вместо setCompoundDrawablesWithIntrinsicBounds () – вам придется вручную устанавливать границы чертежей.

Я не понимаю, как вычислять границы вручную. У меня есть высота и ширина EditText:

 etComment = (EditText) findViewById(R.id.et_comment); Drawable img = getResources().getDrawable( R.drawable.warning ); int size = etComment.getHeight(); img.setBounds(0, 0, size, size); etComment.setCompoundDrawables( img, null, null, null ); 

Но у меня разные результаты в разных размерах экрана. Как я могу рассчитать правильный размер и дополнение значка? Не могли бы вы мне помочь?

Solutions Collecting From Web of "Рассчитать размер изображения при использовании setCompoundDrawables для EditText"

Я думаю, вы можете использовать разные размеры фото для разных экранов и использовать getMinimumWidth для установки Bounds.But, я раньше не пробовал, может быть, это не подходит для патча .9.

Когда вы используете setCompoundDrawables, вам нужен код:

 Drawable img; Resources res = getResources(); img = res.getDrawable(R.drawable.btn_img); //You need to setBounds before setCompoundDrawables , or it couldn't display img.setBounds(0, 0, img.getMinimumWidth(), img.getMinimumHeight()); btn.setCompoundDrawables(img_off, null, null, null); 

Используйте setCompoundDrawables () вместо setCompoundDrawablesWithIntrinsicBounds () – вам придется вручную устанавливать границы чертежей.

Я нашел решение в этом посте.

 Drawable dr = this.getResources().getDrawable(R.drawable.warning); Bitmap bitmap = ((BitmapDrawable) dr).getBitmap(); Drawable d = new BitmapDrawable(this.getResources(), Bitmap.createScaledBitmap(bitmap, 35, 35, true)); txtValue.setCompoundDrawablesWithIntrinsicBounds(d, null, null, null); 

HTH, Milton