Android 버튼 기본적으로 주어지는 여백 제거하기 (insetTop, insetBottom)

이지훈·2023년 6월 8일
0

여러 블로그에서 위에 문제에 대한 해결 방법으로 minHeight와 minWidth를 0dp 로 설정하라는 해결법을 알려주고 있다

하지만 나는 그 방법으로 해결을 하지 못해 다른 방법을 찾아보았고,

insetTop 과 insetBottom 값을 0에 로 설정해서 해결하였다.

이를 모든 버튼마다 다 설정해주기엔 번거로운 관계로 아래와 같이 스타일 속성을 정의한 후에 이를 버튼에 적용시키는 방법으로 구현하고 있다.

  <style name="ShapeAppearance.LargeComponent" parent="ShapeAppearance.MaterialComponents.LargeComponent">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">25%</item>
  </style>

  <style name="Widget.Eggeum.Button" parent="Widget.MaterialComponents.Button">
    <item name="shapeAppearance">@style/ShapeAppearance.LargeComponent</item>
    <item name="backgroundTint">@color/selector_button</item>
    <item name="android:insetBottom">0dp</item>
    <item name="android:insetTop">0dp</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">16dp</item>
    <item name="android:layout_height">52dp</item>
    <item name="android:stateListAnimator">@null</item>
    <item name="android:fontFamily">@font/pretendard_medium</item>
  </style>

추가적으로 stateListAnimator 를 null 로 설정하는 옵션은 버튼의 그림자를 지우기 위함이다

profile
실력은 고통의 총합이다. Android Developer

0개의 댓글