Как программно исправить кнопки скругления углов на андроиде?

Я хочу закруглить углы на кнопке, как показано ниже.

        button.setWidth(buttonWidth);
        button.setHeight(buttonHeight);

Как определить закругленные кнопки с кодом java, без xml




Ответы (3)


Сначала создайте фон:

<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>

and then:

button.setBackground(ContextCompat.getDrawable(context, R.drawable.ready));

этот ответ основан на этом и эта ссылка.

person P4yam    schedule 12.06.2019

Используйте материальные компоненты для Android.

Просто добавьте зависимость:

implementation ‘com.google.android.material:material:1.0.0’

Добавьте MaterialButton. в вашем макете:

<com.google.android.material.button.MaterialButton
   ....
   style="@style/Widget.MaterialComponents.Button.OutlinedButton"
   app:cornerRadius=".."
   app:strokeColor="@color/colorPrimary"/>

и используйте метод setCornerRadius.
Что-то вроде:

button.setCornerRadius(..);
person Gabriele Mariotti    schedule 17.06.2019

Вы должны сделать xml drawable с нужным закругленным фоном прямоугольника (обязательно используйте список состояний, который можно нарисовать, если вы хотите, чтобы он выделялся при нажатии) и установить его в качестве фона. Установка его в качестве фона — это просто вызов setBackgroundDrawable.

person Gabe Sechan    schedule 12.06.2019
comment
Мне понравилось это button.setBackground(R.drawable.score_background); но не применяется - person ihaydinn; 13.06.2019