آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

این rating bar چطور طراحی شده؟

کوثر  9 سال پیش  9 سال پیش
0 0

دوستان خسته نباشین.ببینید تصویر زیر رو نیاز دارم طراحی کنم اما نمیدونم این ویو چی هست توی ابزارهای اندروید استادیو که اصلا نیست.فکر میکنم ریتینگ بار هست اما چطوری به این صورت طراحی شده؟اگ راهنمایی کنید مممنون میشم مرسی

+1 0
یکم باید روش فکر کرد تا بشه کد خوانا و خوبی براش نوشت. اما به نظر من هر کدوم از اون مستطیل ها یه linearLayout میتونه باشه با رنگ مشخص که تو عکس هست. و همه ی آون ها رو بریزید تو یک آرایه. و هر وقت که خواستید میتونید بگید عنصر فلان از این آرایه رنگش به رنگ مورد نظر تغییر کنه. (9 سال پیش)
0 0
شاید و حتما راه های دیگه ای هم هست. من فقط چیزی که به ذهنم اومد رو گفتم. (9 سال پیش)
+1 0
یک نگاهی به این بندازید لینک (9 سال پیش)
0 0
دوستان عزیزم مرسی از نظراتتون.درسته با لاینیر هم میشه در اورد به ذهن خودم هم رسید اما احساس میکنم این روش معقولی نمیتونه باشه و این خودش یک ویوی جداگانست.دوستان دیگ نظر دیه ای ندارن (9 سال پیش)
+1 0
ببینید ریتینگ بار پنج تا ستاره هست. خوب اگه شکل اون ستاره ها عوض شه میشه این دیگه درسته؟ پس باید به فکر شخصی سازی اون افتاد. این لینک میتونه راه گشا باشه. لینک (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Criss  9 سال پیش
+1 0

شما میتونید یه Layout خالی در صفحه داشته باشید و برای نمایش دادن این RatingBar بصورت داینامیک قسمت مربوط به String سمت راست اون رو با گزینه های دلخواه پر کنید و سمت چپ تون رو میتونید با توجه به یک int تغییر رنگ بدید و اون View ها میتونه TextView باشه نمونه کد رو میتونید توی این تاپیک ببینید (قطعه کد آخر) شما باید از یک لایه XML آماده که توی اون یک لایه قرار داده و توی اون لایه شش TextView کنار هم قرار داره و شما یک کلاس دارید بصورت زیر ، پس فقط یکی از سطر هارو توی Layout برای خودتون طراحی کنید

 class Data {
String caption = "";
int rating
}
 
 

به تعدادی که میخواید گزینه در صفحه نمایش بدید یک ایتم از کلاس بالا رو بسازید و در آرایه قرار بدید <

ArrayList<Data> array = new ArrayList<Data>();
Data data = new Data();
data.caption = "کیفیت پخت";
data.rating = 5;

array.add(data);

 
 

بعد از ساخته شدن اطلاعات لازم و اینکه شما از قبل XML اماده رو دارید متونید اون رو توی صفحه نمایش بدید

ArrayList<TextView> ratingArray = new ArrayList<TextView>();

 for(Data data:array){

LinearLayout layouRating = (LinearLayout) G.inflater.inflate(R.layout.xml_rating_view, null);

((TextView) layouRating.findViewById(R.id.txtcaption)).setText(data.caption);

ratingArray.add( ((TextView) layouRating.findViewById(R.id.txtRating1)) )
ratingArray.add( ((TextView) layouRating.findViewById(R.id.txtRating2)) )
ratingArray.add( ((TextView) layouRating.findViewById(R.id.txtRating3)) )
ratingArray.add( ((TextView) layouRating.findViewById(R.id.txtRating4)) )
ratingArray.add( ((TextView) layouRating.findViewById(R.id.txtRating5)) )

for(int i = 0 ; i < data.rating; i++){
ratingArray.get(i).textBackgroundColor(Color.ParseColor(#CF000F));
}

layout.addView(layouRating);

}
 
 

اگر کد رو میخواید کپی و پیست کنید احتمالا مشکل Syntax داره و همینطوری نوشتم کد رو غلط هاشو خودتون اصلاح کنید ، شما میتونید رنگ مربوط برای ست شدن بصورت RatingBar رو هم در کلاس Data اضافه کنید و رنگ رو اونجا بدید و بعد توی حلقه for اخر که به تعداد رنگ ست میشه میتونید رنگ های متفاوتی برای هر ایتم داشته باشید

  class Data {
String caption = "";
int rating = 0;
String color = "#FF0000";
}


ArrayList<Data> array = new ArrayList<Data>();
Data data = new Data();
data.caption = "کیفیت پخت";
data.rating = 5;
data.color = "#00ff00";

array.add(data);
 
 

و برای قسمت اخر بصورت زیر رنگ رو ست کنید و یا اگر میخواید انیمیشن نمایش بدید !

  for(int i = 0 ; i < data.rating; i++){
ratingArray.get(i).setBackgroundColor(Color.ParseColor(data.color));
}
 
 

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .