RatingBar를 만들어 별 다섯 개를 표시하는 방법
을 추가하는 방법에 대한 표준 예를 따르고 있습니다 RatingBar
. 별의 수를 조절하기 위해 사용하려고했습니다 android:numStars="5"
. 문제는 별의 수가 전혀 아무것도하지 않는 것 같다는 것입니다. 세로 레이아웃에서는 별 6 개를 받고 휴대폰을 뒤집 으면 별 10 개 정도를 얻습니다. myBar.setNumStars(5)
xml을로드하는 내 활동 ( ) 의 별 수를 설정하려고했지만 해당 옵션으로도 성공하지 못했습니다.
그래서 제 질문은 별 다섯 개만 표시되도록 레이아웃을 어떻게 정의합니까? 세트 numStars
가 작동하지 않는 것 같습니다.
미리 감사드립니다, Roland
<RatingBar
android:id="@+id/rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="?android:attr/ratingBarStyleSmall"
android:numStars="5"
android:stepSize="0.1"
android:isIndicator="true" />
코드에서
mRatingBar.setRating(int)
RatingBar.setNumStar
문서는 말합니다 :
표시 할 별 수를 설정합니다. 이러한 항목이 제대로 표시 되려면이 위젯의 레이아웃 너비가 내용을 감싸는 것이 좋습니다.
따라서 레이아웃 너비를로 설정하면 wrap_content
이 문제가 해결됩니다.
나를 위해 일한이 : RatingBar
내부해야한다 LinearLayout
에 대한 랩 콘텐츠에 세트 폭 레이아웃을하는 것보다 다른 RatingBar
.
또한를 설정 layout_weight
하면 numStars
속성을 대체 합니다.
<RatingBar
android:id="@+id/ratingBar"
style="@style/custom_rating_bar"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:clickable="true"
android:numStars="5"
/>
XML 파일에서 별 수를 구성합니다. 스타일 또는 활동 / 조각에 제공 할 필요가 없습니다. .... 중요 : WIDTH를 줄 바꿈 내용으로 입력하고 가중치가 활성화되어 있지 않은지 확인하십시오.
나는 또한 지정된 별 수보다 별을 초과하는 문제에 직면하고 있습니다. 이를 위해 우리는 레이아웃 유형이 상대적이거나 선형 인 레이아웃에 대해 걱정하지 않아도됩니다. 다음과 같이 너비를 사용하면됩니다.
ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
제발 하지 않도록 사용 match_parent와 fill_parent을 위한 ratingbar .
도움이 되길 바랍니다.
사용하는 경우
android:layout_width="match_parent"
wrap_content를 사용하면 numStars 세트 만 표시됩니다. :)
android:layout_width="wrap_content"
당신은 사용해야 numStars="5"
당신의 XML, 및 세트 android:layout_width="wrap_content"
.
그런 다음 스타일 및 기타 항목을 가지고 놀 수 있지만 layout_width의 "wrap_content"가 트릭을 수행합니다.
@Roland 문제에 직면했지만라는 속성을 하나 더 포함했습니다.
android:layout_alignParentRight="true"
RatingBar
XML의 내 선언에서. 이 속성은 필요한 별을 설정하고NumStars
당신이 만난 문제에 대해 계속 게시하십시오!
저에게는 패딩을 제거 할 때까지 문제가있었습니다. 패딩을 수용하기 위해 뷰의 크기를 변경하지 않고 대신 콘텐츠를 압축하는 특정 장치에 버그가있는 것 같습니다.
을 제거 padding
하고 layout_margin
대신 사용 하십시오 .
둥근 그림으로 간단한 별 등급을 표시하려면 다음 코드를 사용하십시오.
public static String getIntToStar(int starCount) {
String fillStar = "\u2605";
String blankStar = "\u2606";
String star = "";
for (int i = 0; i < starCount; i++) {
star = star.concat(" " + fillStar);
}
for (int j = (5 - starCount); j > 0; j--) {
star = star.concat(" " + blankStar);
}
return star;
}
그리고 이렇게 사용하세요
button.setText (getIntToStar (4));
XML 레이아웃 측면에 별 5 개의 기본 등급을 추가 할 수 있습니다.
android:rating="5"
편집하다:
<RatingBar
android:id="@+id/rb_vvm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="@dimen/space2"
android:layout_marginTop="@dimen/space1"
style="@style/RatingBar"
android:numStars="5"
android:stepSize="1"
android:rating="5" />
기본값 은 xml 레이아웃에서 andoid : rating 으로 설정됩니다 .
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RatingBar
android:id="@+id/ruleRatingBar"
android:isIndicator="true"
android:numStars="5"
android:stepSize="0.5"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
나는 RatingBar
그것이 속성을 가진 테이블에 둘러싸여 있었기 때문에 최대 별 수까지 늘어난 것을 발견했습니다 android:stretchColumns = "*"
.
내가 갔다하면 stretchCoulumns
모든 열을 끄려면 RatingBar
받는 사람에 따라 표시 android:numStars
값
Another possibility is you are using the Rating in Adapter of list view
View android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)
Below params are necessary for all the attributes to work properly:
- Set the
root
toparent
- boolean
attachToRoot
asfalse
Ex: convertView = inflater.inflate(R.layout.myId, parent, false);
참고URL : https://stackoverflow.com/questions/3858600/how-to-make-ratingbar-to-show-five-stars
'IT story' 카테고리의 다른 글
C #에서 Windows Forms 양식을 닫는 Esc 단추 (0) | 2020.09.10 |
---|---|
Linux 커널은 어떻게 자체적으로 컴파일 할 수 있습니까? (0) | 2020.09.10 |
PHPExcel에서 배경 셀 색상 설정 (0) | 2020.09.10 |
Python, 반대 함수 urllib.urlencode (0) | 2020.09.09 |
SQLAlchemy : 날짜 필드를 필터링하는 방법? (0) | 2020.09.09 |