2012-11-23 8 views
9

पर क्लिक करें मुझे लगता है कि मेरी रेटिंगबार क्लिक को पकड़ने में कोई समस्या है। रेटिंग बार बस ठीक दिख रहा है और इसका डिफ़ॉल्ट मान है। एकमात्र समस्या यह है कि मैं किसी भी मूल्य को नहीं बदल सकता या यह सक्षम नहीं है। मैंने कई अलग-अलग चीजों की कोशिश की है (उदाहरण के लिए लेआउट में सक्षम करना, इसे पूरी तरह जावा में बनाना)। उनमें से कोई भी प्रभाव नहीं लग रहा है। रेटिंग बार का मेरा नवीनतम अवतार यहां दिया गया है। क्लिक को कैप्चर करने में सक्षम होने के लिए मुझे कुछ मूर्खतापूर्ण काम करना होगा।कैप्चर रेटिंगबार

जावा कोड:

RatingBar showRatingBar = (RatingBar) findViewById(R.id.showRatingBar); 
    showRatingBar.setEnabled(true); 
    showRatingBar.setClickable(true); 
    showRatingBar.setRating(0); 
    showRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener(){ 
     @Override 
     public void onRatingChanged(RatingBar ratingBar, float rating, 
       boolean fromUser) { 
      System.out.println("showRating.buildRatingBar: " +rating); 
      ratingBar.setRating(rating); 

     }}); 
    showRatingBar.refreshDrawableState(); 

लेआउट:

  <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/showQualityLabel" 
      android:layout_width="100dp" 
      android:layout_height="wrap_content" 
      android:text="@string/show_rating_label" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="#E6E6E6" 
      android:textSize="12sp" /> 

     <RatingBar 
      android:id="@+id/showRatingBar" 
      style="?android:attr/ratingBarStyleSmall" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:max="5" 
      android:numStars="5" 
      android:rating="0" 
      android:stepSize="1"/> 
    </LinearLayout> 

अग्रिम धन्यवाद।

क्रेग

उत्तर

26

setOnClickListener() काम नहीं कर रहा है कि RatingBar onTouchEvent() को ओवरराइड करता है और कभी नहीं तो देखें # performClick() कभी नहीं कहा जाता है दृश्य यह की देखभाल, (जो OnClickListener कहा जाता है |) है।

RatingBar से निकाले जाते हैं और onTouchEvent ओवरराइड()

ratingBar.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_UP) { 
        float touchPositionX = event.getX(); 
        float width = ratingBar.getWidth(); 
        float starsf = (touchPositionX/width) * 5.0f; 
        int stars = (int)starsf + 1; 
        ratingBar.setRating(stars); 

        Toast.makeText(MainActivity.this, String.valueOf("test"), Toast.LENGTH_SHORT).show();     
        v.setPressed(false); 
       } 
       if (event.getAction() == MotionEvent.ACTION_DOWN) { 
        v.setPressed(true); 
       } 

       if (event.getAction() == MotionEvent.ACTION_CANCEL) { 
        v.setPressed(false); 
       } 




       return true; 
      }}); 
+2

दुर्भाग्य से कोई भाग्य। मुझे अभी भी मेरे क्लिक या रेटिंग में किसी भी बदलाव को पहचानने के लिए कुछ भी नहीं मिल सकता है। अजीब?!?! – mornindew

+0

मुझे ऐसा करने का कोई तरीका मिला है, इसे आजमाएं :) – Talha

+0

अच्छा !!! वह बिल्कुल था। कुंजी टच फ़ंक्शन था। आपका बहुत बहुत धन्यवाद। – mornindew