Тесты Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
30 Авг 2023
2 мин
195

Установка drawableLeft на кнопке в Android программно

Пройдите тест, узнайте какой профессии подходите

Часто разработчики сталкиваются с задачей динамического создания и стилизации элементов интерфейса в Android. Пример такой задачи — установка изображения

Часто разработчики сталкиваются с задачей динамического создания и стилизации элементов интерфейса в Android. Пример такой задачи — установка изображения слева от текста на кнопке (так называемого drawableLeft) во время выполнения программы, а не в момент ее компиляции.

Примером кода, который создает кнопку и задает ей некоторые атрибуты в момент выполнения программы, может служить следующий код:

LinearLayout linear = (LinearLayout) findViewById(R.id.LinearView);
Button button = new Button(this);
button.setText("Button");
button.setOnClickListener(listener);
button.setLayoutParams(
    new LayoutParams(
        android.view.ViewGroup.LayoutParams.FILL_PARENT,         
        android.view.ViewGroup.LayoutParams.WRAP_CONTENT
    )
);      
linear.addView(button);

Однако, этот код не задает изображение слева от текста на кнопке. Для этого нужно использовать метод setCompoundDrawablesWithIntrinsicBounds().

Вот как выглядит пример кода, который устанавливает изображение слева от текста на кнопке:

Drawable img = ContextCompat.getDrawable(context, R.drawable.your_image);
button.setCompoundDrawablesWithIntrinsicBounds(img, null, null, null);

В этом коде сначала получается ссылка на ресурс изображения с помощью метода getDrawable() класса ContextCompat, а затем изображение устанавливается слева от текста на кнопке с помощью метода setCompoundDrawablesWithIntrinsicBounds().

Важно помнить, что метод setCompoundDrawablesWithIntrinsicBounds() принимает 4 аргумента: изображения для левой, верхней, правой и нижней сторон текста соответственно. В данном случае изображение устанавливается только слева от текста, поэтому для остальных сторон передается null.

Добавить комментарий