Я хочу использовать закругленные углы на кнопке, как показано ниже. Код
button.setWidth(buttonWidth); button.setHeight(buttonHeight);
Как определить закругленные кнопки с помощью кода Java, без XML
Сначала создайте фон:
<selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" > <shape android:shape="rectangle" > <corners android:radius="3dip" /> <stroke android:width="1dip" android:color="#5e7974" /> <gradient android:angle="-90" android:startColor="#345953" android:endColor="#689a92" /> </shape> </item> <item android:state_focused="true"> <shape android:shape="rectangle" > <corners android:radius="3dip" /> <stroke android:width="1dip" android:color="#5e7974" /> <solid android:color="#58857e"/> </shape> </item> <item > <shape android:shape="rectangle" > <corners android:radius="3dip" /> <stroke android:width="1dip" android:color="#5e7974" /> <gradient android:angle="-90" android:startColor="#8dbab3" android:endColor="#58857e" /> </shape> </item>
и затем:
button.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));
этот ответ основан на этой и этой ссылке.
Используйте Материальные компоненты для Android .
Просто добавьте зависимость:
implementation ‘com.google.android.material:material:1.0.0’
Добавьте MaterialButton в свой макет:
MaterialButton
<com.google.android.material.button.MaterialButton .... style="@style/Widget.MaterialComponents.Button.OutlinedButton" app:cornerRadius=".." app:strokeColor="@color/colorPrimary"/>
и использовать метод setCornerRadius.
setCornerRadius
Вы бы сделали xml нарисованным с нужным вам скругленным прямоугольным фоном (обязательно используйте список состояний, который можно нарисовать, если вы хотите, чтобы он выделился при нажатии), и установите его в качестве фона.Установка его в качестве фона - это просто вызов setBackgroundDrawable.