एंड्रॉइड - रेटिंग बार सेट करने के लिए कैसे HTC मोबाइल में गैर क्लिक करने योग्य और स्पर्श योग्य है


94

मेरे आवेदन में रेटिंग बार हैं। मैं चाहता हूं कि रेटिंग बार गैर-क्लिक करने योग्य और नॉन-टचेबल हो। इसके लिए मैंने xmlप्रत्येक रेटिंग बार की फ़ाइल में निम्न कोड जोड़ा है ।

यह सैमसंग गैलेक्सी अपोलो जीटी- i5801 में काम कर रहा है। लेकिन यह एचटीसी मोबाइल में काम नहीं कर रहा है। क्यों?

xml कोड

android:clickable="false"     
android:focusableInTouchMode="false"    
android:focusable="false"

धन्यवाद


1
क्या आपने इसे इस रेटिंग की तरह कोडिंग में आज़माया है ।setClickable (झूठी);
एंड्रो सेल्वा

नहीं, लेकिन क्या कोई अंतर है (xml और कोड भाग) है?
naresh 12

निश्चित नहीं। लेकिन मैंने इसे अभी तक xml में आज़माया नहीं है। क्षमा करें
एंड्रो सेल्वा

जवाबों:


332

आप निम्न के साथ xml से संकेतक के रूप में RatingBar भी सेट कर सकते हैं:

android:isIndicator="true"

4
यह सबसे अच्छा समाधान है अगर आप सूची दृश्य में इसका उपयोग कर रहे हैं।
अल्बर्टरोज़ा


यह काम करता है लेकिन आप रेटिंग्स को बदल नहीं सकते। यानी एंड्रॉइड: रेटिंग = "4" काम नहीं करेगा। यह हमेशा 5. होगा
विशाल

@ विशल यह बहुत अच्छी तरह से मामला हो सकता है; 8 साल में बहुत सारी चीजें बदल जाती हैं। मैं अब एंड्रॉइड पर काम नहीं कर रहा हूं, लेकिन जो मुझे याद है उसमें से एक तरीका था जिसमें रेटिंग सेट की जा सकती थी। शायद XML के बजाय कोड से।
एंडी

@Andy - मैं सहमत हूँ, मैंने अपनी टिप्पणी अन्य डेवलपर्स संदर्भ के लिए पोस्ट की है। यदि किसी को रेटिंग संकेतक के साथ रेटिंग बार को 4 के रूप में अक्षम करना है, तो यह एंड्रॉइड की तरह कुछ होना चाहिए: रेटिंग = "4" और सेटऑनटचिस्टनर को संकेतक के लिए ओवरराइड करना होगा।
विशाल

19

यह है यह कोड आपके setOnRatingBarChangeListener में लिखें

ratingaddrate.setIsIndicator(true);

अपडेट करें :

आप अपने XML में इस उदाहरण का उपयोग कर सकते हैं

android:isIndicator="true"

इस लाइन को भी कोड में जोड़ें

ratingBar.setFocusable(false);

18

सेट न करें क्योंकि यह नियंत्रण को मंद कर देगा। आप क्या करना चाहते हैं इस तरह से स्पर्श श्रोता को ओवरराइड करें:

import android.view.View.OnTouchListener;

RatingBar ratingBar = (RatingBar)findViewById(R.id.ratingBar);
ratingBar.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });

इसलिए मूल रूप से आप स्पर्श को रोकते हैं और इसके साथ कुछ नहीं करते हैं

ट्रैकबॉल रोलओवर को ब्लॉक करने के लिए निम्न कोड भी जोड़ें

ratingBar.setFocusable(false);

7
भले ही मैंने यह उत्तर लिखा था और यह काम करता है, मुझे एंडी का उत्तर नीचे बेहतर लगता है
रयान सी

4
एंड्रॉइड: इंडिकेटर = "सही" इसका उचित समाधान है
dirkoneill

गलत जवाब। सही तरीका है: android: isIndicator = "true" (XML) या setIsIndicator (झूठा) // CODE
सिलेरिया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.