개발

이미지와 텍스트가 있는 버튼 만들기

kks950115 2023. 12. 20. 20:48
728x90

클론ui 중에 이미지와 텍스트가 있는 버튼을 만드는데 이런 버튼을 만들려고 했다.

상당히 쉬워보인다. 그냥 버튼태그 안에 이미지 넣고 글자 넣고 센터 정렬하면 되겠지? 하고 대수롭지 않게 생각하고 구현하는데 생각보다 잘 안됐다.

뭐가 안됐냐면.....

버튼 태그 안에 drawble로 이미지를 넣어도 바깥쪽에 고정되어 있어서 gravity="center" 를 적용하더라도 중앙정렬이 안되는 것이다.  text만 중앙 정렬될 뿐 drawble 속성으로 추가된 이미지는 요지부동이였다.

 

그렇게 검색하고 해본 시도들....

drawbleLeft -> 처음 시도한 방법인데 안됨

drawbleStrart ->  똑같음

button 태그를 textview로 바꾸고 위에 시도를 다시 반복 -> 둘다 실패 . 결과는 똑같음

drawblePadding을 적용 -> 여전히 고정이고 버튼이 오른쪽으로 밀려남

 

결국 GG 치고 튜터님에게 상담받고 얻은 결론 

1. 기본 버튼으로는 구현 불가능. 버튼 태그를 override 내 의도대로 커스텀한다. 

2. 버튼이나 텍스트뷰가 아니라 레이아웃 안에 이미지뷰와 텍스트뷰로 꾸민다.

 

난 2번으로 구현했다.

릴레이션레이아웃 안에다가 이미지뷰와 텍스트뷰 위치를 잡아주었다.

릴레이션 레이아웃에 background로 버튼처럼 만들어주니까 보기에는 그럴 듯 했다.

안에다가 clickable=" true" 을 추가해줄 필요는 없다.

클릭리스너가 들어가면 자동으로 clickable= "true"를 추가해주기 때문이다.

 

아래는 그 결과물

<RelativeLayout
                    android:id="@+id/btn_sendmoney"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="40dp"
                    android:background="@drawable/black_roundSquare"
                    android:gravity="center"
                    android:padding="15dp"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toEndOf="@+id/appCompatButton4"
                    app:layout_constraintTop_toTopOf="parent"
                    >

                 <ImageView
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_toLeftOf="@id/tv_sendmoney"
                     android:layout_marginRight="10dp"
                     android:src="@drawable/won_size" />

                 <TextView
                     android:id="@+id/tv_sendmoney"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:text="계좌송금"
                     android:gravity="center"
                     android:textColor="#ffffff"
                     android:textSize="20sp"
                     android:textStyle="bold"/>

                </RelativeLayout>
728x90
반응형