일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- rxjava disposable
- 2022 플러터 설치
- 자바 다형성
- Rxjava Observable
- ANR이란
- jvm이란
- rxjava cold observable
- 서비스 vs 쓰레드
- android retrofit login
- 객체
- 2022 플러터 안드로이드 스튜디오
- android ar 개발
- 안드로이드 레트로핏 crud
- 안드로이드 유닛 테스트 예시
- 스택 큐 차이
- 안드로이드 유닛테스트란
- 멤버변수
- 스택 자바 코드
- 서비스 쓰레드 차이
- ar vr 차이
- 안드로이드 os 구조
- 안드로이드 라이선스 종류
- 안드로이드 유닛 테스트
- 안드로이드 레트로핏 사용법
- 클래스
- rxjava hot observable
- 안드로이드 라이선스
- 큐 자바 코드
- jvm 작동 원리
- 플러터 설치 2022
- Today
- Total
나만을 위한 블로그
[Android] 커스텀 별점(RatingBar) 사용하기 본문
안드로이드 스튜디오에서 기본으로 제공하는 별점 표시 바가 있지만 이것 말고 다른 커스텀 라이브러리를 사용해서 별점 바를 바꾸고 싶을 수 있다.
그 때 써볼만한 것이 아래의 라이브러리인 것 같다.
https://github.com/hedge-hog/RatingBar
사용법은 간단하다. 먼저 아래의 의존성 문구를 앱 수준 gradle에 붙여넣는다.
implementation 'com.hedgehog.ratingbar:app:1.1.2'
그리고 XML에서 선언해주기만 하면 된다. 아래 코드는 리니어 레이아웃에서 weightSum을 설정하고 layout_weight를 준 상태의 커스텀 별점 바다.
<com.hedgehog.ratingbar.RatingBar
android:id="@+id/star_average"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".3"
app:starImageHeight="18dp"
app:starImageWidth="21dp"
android:layout_gravity="bottom"
hedgehog:clickable="false"
hedgehog:halfstart="true"
hedgehog:starCount="5"
hedgehog:starEmpty="@drawable/ic_star_empty"
hedgehog:starFill="@drawable/ic_star_fill"
hedgehog:starHalf="@drawable/star_half2" />
이렇게 선언하면 hedgehog 부분이 붉게 표시되면서 뭘 추가하라고 나오는데, 이 부분이 중요하다.
부모 레이아웃의 속성으로 아래의 문구가 추가되어있는지 꼭 확인하자.
xmlns:hedgehog="http://schemas.android.com/apk/res-auto"
res-auto가 아니라 tools로 되어 있을 수가 있다. tools로 되어 있다면 죽었다 깨어나도 별점이 표시되지 않으니 주의하자.
XML에서 하드코딩하는 것만으로는 당연히 부족할 수 있다. 서버라던가 다른 파일에서 JSON 값을 받아와 리사이클러뷰에 표시해야 하는 경우 어댑터에서 이렇게 할 수 있다.
holder.written_review_star.setStar(item.getStar());
onBindViewHolder() 안에서 받아온 별점을 setStar()로 set해주면 된다.
주의할 것은 setStar()는 내가 모델 클래스에 임의로 만들 수 있는 게터세터가 아니다. 그러니 헷갈리지 않게 이름을 지어두면 나중에 수월할지도 모르겠다.
참고로 setStar()의 원형은 setStar(float starCount)이므로 메서드 매개변수는 float로 넘겨야 한다. 다른 자료형인 경우 parseXXX()를 써서 변환해도 문제없다.
'Android' 카테고리의 다른 글
[Android] 커스텀 다이얼로그에서 데이터 바인딩 사용하는 법 (0) | 2021.06.09 |
---|---|
[Android] Retrofit의 DELETE 사용 시 @Body를 사용할 경우 처리법 (0) | 2021.06.08 |
[Android] All children of ConstraintLayout must have ids to use ConstraintSet 에러 해결 (0) | 2021.05.30 |
[Android] 네트워크 연결 상태를 확인하는 방법(JAVA + Kotlin) (0) | 2021.05.23 |
[Android] 코틀린으로 FCM 푸시 알림 보내는 법 (0) | 2021.05.23 |