2011-09-29 25 views

risposta

0

si deve personalizzare il RatingBar ..

Tuttavia devi solo giocare brutti scherzi con la visualizzazione di immagini RatingBar & poi una sorta di calcoli inversa.

Trick visualizzerà le immagini inverse in RatingBar. Scambia le immagini selezionate e deselezionate in RatingBar.

Consentire all'utente di valutare su RatingBar. Devi scambiare i calcoli selezionati e non selezionati. Voglio dire che devi fare calcoli inversi.

Completo Esempio di lavoro personalizzato RatingBar su StackOverflow risposto solo da me.

Scarica RatingBar icone da qui: http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

+0

Grazie. Ho davvero eccitato c'era un modo più semplice ... –

4

È possibile utilizzare android:rotation="180" nel vostro Ratingbar per ruotarla ho usato in questo modo sul mio sola lettura Ratingbars, non so se questo avrà effetto l'interazione con il Ratingbar.

+1

quindi dovresti anche ruotare i drawable nell'editor di grafica che non è più facile quindi basta impostare la quantità inversa di stelle –

+1

Sì, 'android: rotationY = 180' funziona come un incantesimo .. . –

3

Usa attributo android:scaleX="-1"

O

package com.example.selection; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Matrix; 
import android.util.AttributeSet; 
import android.view.MotionEvent; 
import android.widget.RatingBar; 

public class InvertRatingBar extends RatingBar { 

    public InvertRatingBar(Context context) { 
     super(context); 
    } 

    public InvertRatingBar(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public InvertRatingBar(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     int width = this.getMeasuredWidth(); 
     event.setLocation(width - event.getX(), event.getY()); 
     return super.onTouchEvent(event); 
    } 

    @Override 
    protected synchronized void onDraw(Canvas canvas) { 
     int width = this.getMeasuredWidth(); 
     Matrix matrix = canvas.getMatrix(); 
     matrix.preTranslate(width, 0); 
     matrix.preScale(-1.f, 1); 
     canvas.setMatrix(matrix); 
     super.onDraw(canvas); 
    } 
} 
Problemi correlati