Установить радиус границы для кнопки изображения в Android

Чтобы установить радиус границы кнопки изображения в Android, вы можете использовать различные методы. Вот несколько подходов:

  1. Метод 1. Использование атрибутов XML в файле макета:
    В файле макета XML добавьте следующие атрибуты к элементу ImageButton:

    <ImageButton
       ...
       android:background="@drawable/button_background"
       android:scaleType="fitCenter"
       android:adjustViewBounds="true"
       />

    Создайте файл с именем button_background.xmlв каталоге res/drawableи добавьте следующий код:

    <shape xmlns:android="http://schemas.android.com/apk/res/android">
       <corners android:radius="20dp" />
    </shape>

    Отрегулируйте значение radius, чтобы получить желаемый радиус границы.

  2. Метод 2. Программное использование в Java/Kotlin:
    В коде Java/Kotlin найдите ссылку на ImageButton и установите возможность рисования фона с закругленными углами:

    ImageButton imageButton = findViewById(R.id.imageButton);
    GradientDrawable drawable = new GradientDrawable();
    drawable.setShape(GradientDrawable.RECTANGLE);
    drawable.setCornerRadius(20);
    imageButton.setBackground(drawable);
  3. Метод 3. Использование пользовательского подкласса ImageButton:
    Создайте собственный подкласс ImageButton и переопределите метод onDrawдля применения закругленных углов:

    public class RoundedImageButton extends ImageButton {
       public RoundedImageButton(Context context) {
           super(context);
       }
       public RoundedImageButton(Context context, AttributeSet attrs) {
           super(context, attrs);
       }
       @Override
       protected void onDraw(Canvas canvas) {
           float radius = 20;
           Path clipPath = new Path();
           RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight());
           clipPath.addRoundRect(rect, radius, radius, Path.Direction.CW);
           canvas.clipPath(clipPath);
           super.onDraw(canvas);
       }
    }

    Затем используйте класс RoundedImageButtonв файле макета XML вместо стандартного ImageButton.