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

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

Пройдите тест, узнайте какой профессии подходите
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

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

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

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

1
2
3
4
5
6
7
8
9
10
11
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().

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

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

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

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

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