পাঁচ তারকা দেখানোর জন্য কীভাবে রেটিংবার তৈরি করবেন


100

আমি কীভাবে যুক্ত করতে পারি তার আদর্শ উদাহরণ অনুসরণ করছি RatingBar। তারার সংখ্যা নিয়ন্ত্রণ করতে আমি ব্যবহার করার চেষ্টা করেছি android:numStars="5"। সমস্যাটি হ'ল তারার সংখ্যা মোটেও কিছু করার মনে হয় না। প্রতিকৃতি-লেআউটে আমি 6 তারা পাই এবং আমি ফোনটি ফ্লিপ করি যখন আমি প্রায় 10 তারা পাই get আমি আমার ক্রিয়াকলাপ ( myBar.setNumStars(5)) -এ তারার সংখ্যা নির্ধারণ করার চেষ্টা করেছি যা এক্সএমএল লোড করে তবে সেই বিকল্পটি দিয়ে কোনও সাফল্য পাওয়া যায়নি।

সুতরাং আমার প্রশ্নটি হল আমি কীভাবে আমার বিন্যাসটিকে সংজ্ঞায়িত করব যাতে এটি কেবল পাঁচটি তারা দেখায়? সেটটি numStarsকাজ করছে বলে মনে হচ্ছে না।

অগ্রিম ধন্যবাদ, রোল্যান্ড

উত্তর:


181
<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)

121
আপনার উত্তরের জন্য ধন্যবাদ. সমস্যাটি হ'ল আপনি অ্যান্ড্রয়েড ব্যবহার করতে পারবেন না: লেআউট_উইথ = "ফিল_প্যারেন্ট" যেহেতু রেটিংবারের অ্যাপেন্টি অ্যান্ড্রয়েডকে উপেক্ষা করে: নাম স্টার্স অন্যটি। : - /
রোল্যান্ড

4
আমার প্রয়োজনীয়তা পিতামাতাকে পূরণ করার জন্য রেটিংবার সেট করা হচ্ছে বা পিতামাতার সাথে স্থির তবে স্থির তারাগুলি 5. এটি কীভাবে করবেন? এটা কি সম্ভব?
প্রশান্ত দেববাদ্বর

@ প্রশান্তদেববাদর আপনি "স্টাইল" বৈশিষ্ট্যে তিনটি ভিন্ন আকারের চেষ্টা করেছেন? যেমন রেটিংবারস্টাইল
এম উসমান খান

67

RatingBar.setNumStarডকুমেন্টেশন বলেছেন:

প্রদর্শিত তারার সংখ্যা সেট করে। এগুলি সঠিকভাবে প্রদর্শিত হওয়ার জন্য, এই উইজেটের লেআউটের প্রস্থকে মোড়ানো সামগ্রীতে রাখার পরামর্শ দেওয়া হচ্ছে।

সুতরাং wrap_contentএই সমস্যাটি সমাধান করার জন্য বিন্যাস প্রস্থটি সেট করা ।


25

এটি আমার পক্ষে কাজ করেছে: কন্টেন্ট মোড়ানোর জন্য বিন্যাসের প্রস্থ সেট করা ছাড়া অন্য RatingBarঅভ্যন্তরে থাকা উচিত ।LinearLayoutRatingBar


4
@ ভ্যালেন্টিনগেলা যদিও এত অদ্ভুত নয়: রেটিং বারটি তার নিজস্ব প্রস্থকে বিবেচনা করে, অন্যদিকে বহিরাগত লিনিয়ারলাউট তার প্যারেন্ট লেআউট প্রস্থটি পূরণ করার বিষয়ে চিন্তা করে।
TechNyquist

13

অতিরিক্তভাবে, আপনি যদি একটি সেট করেন layout_weight, এটি numStarsগুণকে ছাড়িয়ে যায় ।


4
এটি সত্যই ডক্সে থাকা উচিত। আমি দেখতে পেয়েছি যে এমনকি একটি মার্জিন রাইট সেটিং যোগ করেও নামস্টারগুলি ছুড়ে ফেলেছে
অ্যান্টন আই

এটি ছিল ভাল পরামর্শ। শেষ পর্যন্ত এটি আমার পক্ষে কাজ করতে প্যাডিং সরিয়েছি।
থা লেয়াং

7

আপনার কেবলমাত্র numStars="5"আপনার এক্সএমএল ব্যবহার করা উচিত এবং সেট করা উচিত android:layout_width="wrap_content"
তারপরে, আপনি শৈলী এবং অন্যান্য স্টাফ নিয়ে প্রায় খেলতে পারেন, তবে লেআউট_উইথথের "র‌্যাপ_কন্টেন্ট" এটাই কৌশলটি কার্যকর করে does


6

আপনি যদি ব্যবহার করছেন

android:layout_width="match_parent"

মোড়ানো_ কনটেন্ট ব্যবহার করুন এবং এটি কেবলমাত্র নাম্বার স্টারগুলি দেখায় :)

android:layout_width="wrap_content"


5
<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" 
                    />

এক্সএমএল ফাইলে তারার সংখ্যা কনফিগার করুন ... স্টাইলস বা ক্রিয়াকলাপ / খণ্ডে এটি সরবরাহ করার দরকার নেই .... গুরুত্বপূর্ণ: আপনি মোড়ানো সামগ্রী এবং ওজন সক্ষম না করে তা নিশ্চিত করে নিন


5

আমি তারকাদের নির্দিষ্ট সংখ্যার চেয়ে তারার ছাড়িয়ে গিয়েও এই সমস্যার মুখোমুখি হয়েছি। এর জন্য, লেআউটটি আপেক্ষিক বা লিনিয়ার বিন্যাস যাই হোক না কেন তা নিয়ে আমরা উদ্বিগ্ন হতে চাই না। কেবল নীচে প্রস্থটি ব্যবহার করুন:

ratingBar.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));


দয়া করে এড়িয়ে ব্যবহার match_parent এবং fill_parent জন্য ratingbar
আশা করি বিষয়গুলি সহায়ক হবে।


3

এমনকি আমি @ রোল্যান্ড ইস্যুটির মুখোমুখি হয়েছি, আমি আরও একটি বৈশিষ্ট্যযুক্ত অন্তর্ভুক্ত করেছি

android:layout_alignParentRight="true" 

RatingBarএক্সএমএলে আমার ঘোষণায়। এই বৈশিষ্ট্যটি প্রয়োজনীয় নক্ষত্রগুলির সেট আপ এবং সেট আপ করা থেকে বিরত ছিলNumStars

আপনি যে বিষয়গুলি জুড়ে এসেছেন সে বিষয়ে পোস্ট রাখুন!


ঠিক একই জিনিস দিয়ে একটি বন্ধুকে সাহায্য করেছেন। আমি এই পদ্ধতির পরামর্শ দিয়েছি এবং পরে এটি অকার্যকর বলে জানতে পেরেছি।
অ্যাডামএমসি 331

3

আমার জন্য, আমি প্যাডিং সরিয়ে না দেওয়া পর্যন্ত আমার একটি সমস্যা ছিল। দেখে মনে হচ্ছে কিছু নির্দিষ্ট ডিভাইসে একটি বাগ রয়েছে যা প্যাডিং সামঞ্জস্য করতে ভিউয়ের আকারকে পরিবর্তন করে না এবং এর পরিবর্তে সামগ্রীগুলি সংকুচিত করে।

সরান padding, layout_marginপরিবর্তে ব্যবহার করুন।


1

রাউন্ড ফিগারে একটি সাধারণ তারকা রেটিং দেখানোর জন্য কেবল এই কোডটি ব্যবহার করুন

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;
    }

এবং এটি ব্যবহার করুন

বাটন.সেটেক্সট (getIntToStar (4));


1

আপনি এক্সএমএল লেআউটের পাশে পাঁচটি তারা ডিফল্ট রেটিং যুক্ত করতে পারেন

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" />

এটি কীভাবে এক্সএমএল লেআউটে যুক্ত করতে হয় তার একটি উদাহরণ দিয়ে স্পষ্ট করুন।
কুর্ট ভ্যান ডেন ব্র্যান্ডেন

আমি সম্পূর্ণ ভিউ যোগ করেছি।
গৌরব শেঠি

1

যদি আপনি এর প্রস্থের সাথে RatingBarএকটি অভ্যন্তরে আবদ্ধ করেন তবে সম্পাদক পূর্বরূপটি তার প্রকৃত প্রস্থের সাথে আনুপাতিক সংখ্যক তারা প্রদর্শন করতে চলেছে, আপনি সম্পত্তি সেট করে রাখুন তা নির্বিশেষে । সঠিক পূর্বরূপ পেতে ব্যবহার করুন :ConstraintLayoutmatch_constraintandroid:numStarswrap_content

<RatingBar android:id="@+id/myRatingBar"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_marginStart="48dp"
           android:layout_marginEnd="48dp"
           android:numStars="5"
           app:layout_constraintEnd_toEndOf="parent"
           app:layout_constraintStart_toStartOf="parent"
           app:layout_constraintTop_toBottomOf="parent" />


0
<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>

0

আমি দেখতে পেলাম যে এটি RatingBarএকটি সর্বাধিক সংখ্যক তারা পর্যন্ত প্রসারিত কারণ এটি বৈশিষ্ট্যের সাথে একটি সারণীতে আবদ্ধ ছিল android:stretchColumns = "*"

একবার আমি stretchCoulumnsসমস্ত কলামগুলি বন্ধ করে দিই , মান RatingBarঅনুসারে প্রদর্শিত android:numStarsহয়


0

আরেকটি সম্ভাবনা হ'ল আপনি তালিকার ভিউয়ের অ্যাডাপ্টারে রেটিং ব্যবহার করছেন

View android.view.LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)

সমস্ত বৈশিষ্ট্যগুলি সঠিকভাবে কাজ করার জন্য নীচে প্যারামগুলি প্রয়োজনীয়:

  1. সেট rootথেকেparent
  2. বুলিয়ান attachToRootহিসাবেfalse

উদাঃ রূপান্তর ভিউ = inflater.inflate (R.layout.myId, পিতামাতার, মিথ্যা);


0

এখানে আসল জিনিসটি wrap_contentপরিবর্তে ব্যবহার করা match_parent। যদি আপনি match_parentলেআউটটি ব্যবহার করেন তবে এটি স্টার ভেরিয়েবলের চেয়েও বেশি হলেও তারা দিয়ে পূর্ণ হবে with


4
আপনি কিছু দরকারী উদাহরণ প্রদান করতে পারেন?
অ্যালেক্স এল

হ্যাঁ, ম্যাচ প্যারেন্টগুলিতে এটি 8 টি দেখানো হয়েছিল, তবে মোড়ানো সামগ্রীতে এটি 5 দেখিয়েছিল
বিপিন শর্মা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.