设置只供显示,而不能修改的评分组件

来源:互联网 发布:万网备案域名出售 编辑:程序博客网 时间:2024/04/29 09:41

先上效果图:


这是xml适配器中的关键代码:

<RatingBar    android:id="@+id/book_star_rb"    style="@style/ratingBar"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:clickable="false"    android:max="5" />

这是RatingBar所引用的style:这里需要注意的是android:maxHeightandroid:minHeight两个属性,这里我设置的是14dip,是因为★的高度是16左右,

设置成16的三分之二就行了

<!-- 评分组件(★) --><style name="ratingBar" parent="@android:style/Widget.RatingBar">    <item name="android:progressDrawable">@drawable/rating_bar_drawable</item>    <item name="android:minHeight">14dip</item>    <item name="android:maxHeight">14dip</item></style>

这是style所引用的drawable:rating_bar_drawable.xml

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" >    <item        android:id="@+android:id/background"        android:drawable="@drawable/book_list_star_empty"/>    <item        android:id="@+android:id/secondaryProgress"        android:drawable="@drawable/book_list_star_empty"/>    <item        android:id="@+android:id/progress"        android:drawable="@drawable/book_list_star_full"/></layer-list>

最后在适配器的java代码中设置:

//去掉评分组件的焦点,防止遮挡listView单项的焦点holder.book_star_rb.setFocusable(false);//评分组件只能用来显示,不能修改.因此需要取消Touch监听holder.book_star_rb.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {return true;}});







原创粉丝点击