تعیین یک عکس دلخواه برای نمایش به جای عکس ستاره پیش فرض RatingBar (و همچنین به عنوان راه حلی برای تعیین اندازه عکس RatingBar به صورت دلخواه) (ساخت RatingBar سفارشی (Custom RatingBar))، در برنامه نویسی اندروید
ممکن است بخواهیم که به جای عکس ستاره پیش فرض RatingBar ، عکسی دیگر را انتخاب کنیم و یا اندازه دلخواهی برای آن در نظر بگیریم. در این موارد، باید یک RatingBar سفارشی (Custom RatingBar)) را طراحی کنیم. بنابراین در ادامه، مراحل طراحی را شرح می دهیم.
1- ابتدا باید دو عکس برای دو حالت ستاره به صورت خالی و ستاره به صورت پر را داشته باشیم که قرار است جایگزینی برای عکس های پیش فرض RatingBar معمولی باشند. نام آن دو عکس را به صورت زیر انتخاب می کنیم و آنها را در پوشه drawable پروژه اندروید کپی می کنیم :
دقت داشته باشید که اندازه عکس ها، در چگونگی نمایش آنها (اندازه آنها) تاثیر دارد (به دلیل ماهیت RatingBar ، معمولا روش های عادی تعیین اندازه برای یک اندازه عکس استفاده شده، جوابگو نیست و مجبوریم که اندازه های عکس ها را به درستی انتخاب کنیم، این مورد معمولا با تجربه به دست می آید. همچنین، قرار دادن اندازه های مختلف عکس در پوشه های drawable مختلف نیز می تواند کمک کند).
2- در پوشه drawable از پروژه اندروید، یک فایل xml با نام ratingstars.xml ساخته و کدهای زیر را در آن می نویسیم :
3- در فایل styles.xml (که در پوشه values از پروژه اندروید قرار دارد)، باید ، کد style زیر را اضافه می کنیم :
یعنی مثلا اگر قبلا هیچ style ای در فایل styles.xml تعریف نشده باشد، اکنون باید کدهای آن مشابه کد زیر باشد :
4- در فایل xml متناظر با لایه گرافیکی Activity که RatingBar تعریف شده است، ویژگی زیر را به کدهای xml تعریف RatingBar اضافه می کنیم :
یعنی مثلا کل کدهای xml مربوط به RatingBar می تواند مشابه کد زیر باشد :
در کد مثال بالا، در صورت تمایل می توانید مشخصه layout_height را برابر wrap_content انتخاب کنید یا عدد در نظر گرفته شده برای آن را مطابق مورد مناسب برای خود تغییر بدهید.
گاهی دیده شده که با استفاده از روش بالا و هنگامی که مشخصه layout_height برای تگ RatingBar را برابر یک عدد بزرگتر از ارتفاع لازم برای نمایش عکس ستاره (عکس جدید) انتخاب می کنیم، در زیر RatingBar ، تکراری از آخرین ردیف پیکسل های عکس مربوط به RatingBar را مشاهده خواهیم کرد. این مشکل، به دلیل ماهیت ساختاری RatingBar است و کافی است که در عکس به کار رفته (هر دو عکس)، یک یا دو ردیف آخر از پیکسل های عکس را به صورت کاملا شفاف در بیاوریم (عکس از نوع png باشد) تا تکرار آنها، هیچ تاثیری در خروجی نداشته باشد.