Рассчитать размер изображения при использовании setCompoundDrawables для EditText - PullRequest
10 голосов
/ 20 ноября 2011

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

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

enter image description here enter image description here

Значок изменяет размер 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 );

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

Ответы [ 3 ]

7 голосов
/ 26 июня 2012

Я думаю, вы можете использовать разные размеры изображений для разных экранов и использовать getMinimumWidth для установки границ. Но я раньше не пробовал, может быть, это не подходит для патча .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); 
4 голосов
/ 11 апреля 2013

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

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, Милтон

3 голосов
/ 20 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...