কিভাবে একটি ছোট রেটিং রেটিং বার করবেন?


134

আমি একটি বিন্যাসে একটি রেটিংবার যুক্ত করেছি :

<RatingBar 
    android:id="@+id/ratingbar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:numStars="5"
    android:stepSize="1.0"
    />  

তবে রেটিং বারের জন্য ডিফল্ট শৈলীটি অনেক বড়।
আমি এন্ড্রয়েড স্টাইল যুক্ত করে এটি পরিবর্তন করার চেষ্টা করেছি:style="?android:attr/ratingBarStyleSmall"

তবে ফলাফলটি খুব ছোট এবং এই সম্পত্তি দিয়ে কোনও হার নির্ধারণ করা অসম্ভব।

আমি কীভাবে করতে পারি?

উত্তর:


106

ডিফল্ট রেটিংবার উইজেটটি হ'ল সর্ট 'ল্যাম্প।

উত্সটি " ?android:attr/ratingBarStyleIndicator" এর সাথে " " শৈলীর সাথে উল্লেখ করে ?android:attr/ratingBarStyleSmallযা আপনি ইতিমধ্যে পরিচিত। ratingBarStyleIndicatorকিছুটা ছোট হলেও এটি এখনও বেশ কুৎসিত এবং মন্তব্যগুলি নোট করে যে এই শৈলীগুলি "মিথস্ক্রিয়া সমর্থন করে না"।

আপনি সম্ভবত নিজের ঘূর্ণায়মান ভাল better এটি কীভাবে করবেন তা দেখানোর জন্য http://kozyr.zydako.net/2010/05/23/ ব্যাখ্যা ty - ratingbar/ এ একটি শালীন দেখানোর গাইড রয়েছে । (আমি এখনও এটি নিজেই করি নি, তবে এক বা একদিনে চেষ্টা করব))

শুভকামনা!

পিএস দুঃখিত, আপনার চারপাশে ঝাঁকুনির জন্য উত্সটির একটি লিঙ্ক পোস্ট করতে যাচ্ছিল তবে আমি একজন নতুন ব্যবহারকারী এবং 1 টির বেশি URL পোস্ট করতে পারি না। যদি আপনি উত্স গাছের মাধ্যমে আপনার পথটি খনন করেন তবে এটি ফ্রেমওয়ার্ক / বেস / কোর / জাভা / অ্যান্ড্রয়েড / উইজেট / রেটিংবারে জাভাতে অবস্থিত


অ্যান্ড্রয়েড: এটির / রেটিংবার্স স্টাইলস্মল এবং বিশ্বব্যাপী রেটিং থিম সেট করা তবে ঠিক থিমের নামটি ব্যবহার না করা, অনেক ধন্যবাদ;)
সুসং গোহ

7
যদি আমরা সূচক সম্পত্তি অ্যান্ড্রয়েড সেট করি : আমরা এর সাথে ইন্টারঅ্যাক্ট করব তার চেয়ে "ইন্ডিজিটর =" মিথ্যা " ..
ময়ূর আর আমিপাড়া

ডক্স পরোক্ষভাবে ratingBarStyleSmall দুই ছোট। আমি মনে করি আপনার মন্তব্য পিছিয়ে।
AdamMc331

5
লিঙ্কটি নষ্ট হয়ে গেছে।
ডেনি

@ ডেনি সামগ্রী গুগল ক্যাশে থেকে উপলব্ধ । আমি বছরগুলিতে অ্যান্ড্রয়েড রেটিং বারগুলির দিকে নজর রাখেনি বলে আমি সামগ্রীটি দিয়ে পোস্টটি আপডেট করছি না এবং সেই লিঙ্কের সামগ্রীটি এখনও বৈধ কিনা তা নিশ্চিত নয় not
ফেরে

195

এখানে দেওয়া কোডটি কীভাবে আঠালো করা যায় ...

ধাপ 1. আপনার নিজের রেটিং স্টারগুলি এখানে দরকার res/drawable...

একটি পূর্ণ তারকা

খালি তারা

পদক্ষেপ -2 res/drawableআপনার ratingstars.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/star_empty" />
    <item android:id="@android:id/secondaryProgress"
          android:drawable="@drawable/star_empty" />
    <item android:id="@android:id/progress"
          android:drawable="@drawable/star" />
</layer-list>

পদক্ষেপ -3 res/valuesআপনার styles.xmlঅনুসরণ হিসাবে প্রয়োজন ...

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/ratingstars</item>
        <item name="android:minHeight">22dip</item>
        <item name="android:maxHeight">22dip</item>
    </style>
</resources>

আপনার লেআউটে পদক্ষেপ -4 ...

<RatingBar 
      android:id="@+id/rtbProductRating"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:numStars="5"
      android:rating="3.5"
      android:isIndicator="false"
      style="@style/foodRatingBar"    
/>  

7
এটিকে শোনাবেন না: <আইটেম অ্যান্ড্রয়েড: আইডি = "@ + অ্যান্ড্রয়েড: আইডি / সেকেন্ডারিপ্রোগ্রেস" অ্যান্ড্রয়েড: অঙ্কনযোগ্য = "@ অঙ্কনযোগ্য / তারা_হম্পতি" /> "@ অঙ্কনযোগ্য / তারা_হেল্ফ" /> হউক বা আপনি যেটাকে ডেকেছেন?
স্ট্যাকওভারফ্লো প্রবাহিত হয়েছে

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

1
@ ভ্ল্যাড উত্তরটি প্রথম পংক্তিটি পড়ুন আমি উল্লেখ করেছি যে আমি এটি পেয়েছি।
বৈভব জনি

4
নিখুঁতভাবে কাজ করে :) তবে আমি 2 টি সমস্যা পেয়েছি .. numStars আর কাজ করে না, এবং আমি সর্বোচ্চ এবং সর্বনিম্ন প্রস্থ নির্ধারণ করেও এটি কিছুটা বড় করতে পারি না
আহমদ দ্বাইক 'ওয়ার্লক'

1
ধন্যবাদ @ পিডপাইপার - এটি আমার অনেক সময় বাঁচিয়েছে !! সর্বকালের সেরা ব্যাখ্যা!
এডমন্ড তমাস

70

শুধু ব্যবহার করুন:

android:scaleX="0.5"
android:scaleY="0.5"

আপনার প্রয়োজন অনুযায়ী স্কেল ফ্যাক্টর পরিবর্তন করুন।

বামদিকে প্যাডিং তৈরি না করে স্কেল করার জন্য যুক্ত করুন

android:transformPivotX="0dp"

স্কেলএক্স স্কেলওয়াই ভাল তবে কুৎসিত প্যাডিং ছেড়ে দিন, আপনি যদি এই প্যাডিং থেকে মুক্তি পেতে পারেন তবে এটি সবচেয়ে সহজ নিখুঁত উত্তর হতে পারে
আহমদ দ্বাইক 'ওয়ারলক'

এছাড়াও, তাদের অ্যান্ড্রয়েড 3.0 / এপিআই 11 প্রয়োজন
আভেরস্কো

6
আমি কুৎসিত (ডান) প্যাডিংয়ের সমাধান করছি codeandroid:scaleX="0.75" android:scaleY="0.75" android:layout_marginRight="-25dp"
hannes Ach

1
যদিও এটি দেখতে সবচেয়ে সহজ সমাধানের মতো, এটি আমার পক্ষে কার্যকর হয়নি। কোনও কারণে কোনও প্রভাব ছিল না। এটি কি কারণ আমি অ্যান্ড্রয়েড 5.x এ আছি?
নটিলাস

আপনি রেটিং বারের উচ্চতা উল্লেখ করে কিছু অতিরিক্ত প্যাডিং অপসারণ করতে পারেন:android:layout_height="40dp"
মনোহর রেড্ডি

43

এর সাথে শ্রোতা যুক্ত করার দরকার নেই ?android:attr/ratingBarStyleSmall। কেবল যুক্ত করুন android:isIndicator=falseএবং এটি ক্লিক ইভেন্টগুলি ক্যাপচার করবে, যেমন

<RatingBar
  android:id="@+id/myRatingBar"
  style="?android:attr/ratingBarStyleSmall"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:numStars="5"
  android:isIndicator="false" />

4
isIndicator কী!
ডেডফিশ

19

ওএস দ্বারা কার্যকর একটি ছোট

<RatingBar
    android:id="@+id/ratingBar"
    style="?android:attr/ratingBarStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    />

2
উপরের কোডটি দেওয়ার সময় রেটিং বারটি ক্লিকযোগ্য নয়।
শরথ

16

এটি প্রয়োগ করুন।

<RatingBar android:id="@+id/indicator_ratingbar"
    style="?android:attr/ratingBarStyleIndicator"
    android:layout_marginLeft="5dip"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical" />

1
যদিও দৃশ্যত এটি দুর্দান্ত। ইভেন্টগুলি এই সমাধানটিতে কাজ না করে ক্লিক করুন। আপনি কি এই জন্য কোন ঠিক আছে?
Ghankhan Bar

4
যদি আপনি ক্লিকগুলি অ্যান্ড্রয়েড ব্যবহার করতে চান তবে: ইন্ডিকেটর = "মিথ্যা"
ডি 4rWiNS

15

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

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
                <RatingBar
                    android:id="@+id/myRatingBar"
                    style="?android:attr/ratingBarStyleSmall"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:numStars="5" />
            </LinearLayout>

এবং আমার ক্রিয়াকলাপের মধ্যে:

    final RatingBar minimumRating = (RatingBar)findViewById(R.id.myRatingBar);
    minimumRating.setOnTouchListener(new OnTouchListener()
    { 
        public boolean onTouch(View view, MotionEvent event)
        { 
            float touchPositionX = event.getX();
            float width = minimumRating.getWidth();
            float starsf = (touchPositionX / width) * 5.0f;
            int stars = (int)starsf + 1;
            minimumRating.setRating(stars);
            return true; 
        } 
    });

আমি আশা করি এটি অন্য কাউকে সহায়তা করে। কারও নিজের আঁকার চেয়ে অবশ্যই সহজ (যদিও আমি এটি দেখতে পেয়েছি তা কার্যকর হয় তবে আমি কেবল তারার সহজ ব্যবহার চাইছিলাম)।


এটি কাজ করে, এবং এটি সহজ ... তবে ratingBarStyleSmallতারকারা সত্যই কার্যকর হতে খুব ছোট। আমি মনে করি একটি মধ্যবর্তী আকারের তারাগুলি পেতে আমাকে নিজের রোল করতে হবে।
বিয়ার মি

5
<RatingBar
    android:id="@+id/rating_bar"
    style="@style/Widget.AppCompat.RatingBar.Small"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

5
 <RatingBar
                    android:rating="3.5"
                    android:stepSize="0.5"
                    android:numStars="5"
                    style = "?android:attr/ratingBarStyleSmall"
                    android:theme="@style/RatingBar"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>

// if you want to style 

 <style name="RatingBar" parent="Theme.AppCompat">
        <item name="colorControlNormal">@color/colorPrimary</item>
        <item name="colorControlActivated">@color/colorAccent</item>
    </style>

// ছোট রেটিং বারের জন্য এই লাইনটি যুক্ত করুন

style = "?android:attr/ratingBarStyleSmall"

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

3

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

style="?attr/ratingBarStyleSmall"

পরিবর্তে.

কীভাবে এটি ব্যবহার করতে হবে তার সম্পূর্ণ কোড:

<android.support.v7.widget.AppCompatRatingBar
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="?attr/ratingBarStyleSmall" // use smaller version of icons
                android:theme="@style/RatingBar"
                android:rating="0"
                tools:rating="5"/>

<style name="RatingBar" parent="Theme.AppCompat">
        <item name="colorControlNormal">@color/grey</item>
        <item name="colorControlActivated">@color/yellow</item>
        <item name="android:numStars">5</item>
        <item name="android:stepSize">1</item>
    </style>

3

ছোট রেটিংবারের জন্য সেরা উত্তর

<RatingBar
                    android:layout_width="wrap_content"
                    style = "?android:attr/ratingBarStyleSmall"
                    android:layout_height="wrap_content" />

2

এই কোডটি ব্যবহার করুন

<RatingBar
    android:id="@+id/ratingBarSmalloverall"
    style="?android:attr/ratingBarStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="30dp"
    android:isIndicator="false"
    android:numStars="5" />

2
<RatingBar
    android:id="@+id/ratingBar1"
    android:numStars="5"
    android:stepSize=".5"
    android:rating="3.5"
    style="@android:style/Widget.DeviceDefault.RatingBar.Small"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

2

আমি পেয়েছি সেরা উত্তর

  <style name="MyRatingBar" parent="@android:style/Widget.RatingBar">
    <item name="android:minHeight">15dp</item>
    <item name="android:maxHeight">15dp</item>
    <item name="colorControlNormal">@color/white</item>
    <item name="colorControlActivated">@color/home_add</item>
</style>

এই মত ব্যবহারকারী

<RatingBar
                style="?android:attr/ratingBarStyleIndicator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:isIndicator="false"
                android:max="5"
                android:rating="3"
                android:scaleX=".8"
                android:scaleY=".8"
                android:theme="@style/MyRatingBar" />

স্কেলএক্স এবং স্কেলওয়াইয়ের মান ব্যবহার করে আকার বাড়াতে / হ্রাস করুন


1

অন ​​টাচ ইভেন্ট সহ ছোট রেটিং বারের জন্য নিম্নলিখিত কোডটি ব্যবহার করুন

enter code here


<RatingBar
            android:id="@+id/ratingBar"
            style="?android:ratingBarStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:isIndicator="false"
            android:rating="4"
            android:stepSize="0.5" />

0

অনেক গবেষণার পরে আমি কাস্টম রেটিং বারগুলির আকার হ্রাস করার সর্বোত্তম সমাধানটি হ'ল নীচের বর্ণিত হিসাবে নির্দিষ্ট আকারে আঁকতে সক্ষম অগ্রগতির আকার পাওয়া:

xxhdpi - 48 * 48 px

xhdpi - 36 * 36 px

এইচডিপিআই - 24 * 24 পিক্সেল

এবং শৈলীতে সমস্ত রেজোলিউশনের জন্য 16 ডিপি হিসাবে ন্যূনতমতা এবং সর্বোচ্চতা রাখুন।

এই আকারগুলি আমি খুব সামঞ্জস্যপূর্ণ এবং রেটিংবারের সমতুল্য খুঁজে পেয়েছি কারণ ছোট আকারের রেটিং বারগুলি পেতে আপনাকে সহায়তা না করে তা আমাকে জানান mall ছোট শৈলীর বৈশিষ্ট্য attrib


0

এটি আমার জন্য রেটিং বারে xML শৈলীতে কাজ করছে = "? অ্যান্ড্রয়েড: অ্যাট্রি / রেটিংবার্সস্টাইলস্ম্যাল" এই যুক্ত করুন এটি কাজ করবে।


-4

আমি এই সমস্যাটি নিম্নলিখিত সমস্যার সমাধান করি: শৈলী = "? অ্যান্ড্রয়েড: অ্যাট্রি / রেটিংবার্স স্টাইলস্মল"


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