2011-09-29 18 views

Respuesta

0

tiene que personalizar la RatingBar ..

Sin embargo sólo hay que jugar malas pasadas con la visualización de imágenes RatingBar & entonces algún tipo de cálculos inversos.

Truco mostrará imágenes inversas en la barra de calificación. Intercambie las imágenes seleccionadas y no seleccionadas en la barra de clasificación.

Permitir que el usuario evalúe RatingBar. Tienes que intercambiar los cálculos seleccionados y no seleccionados. Quiero decir que tienes que hacer cálculos inversos.

Ejemplo de trabajo completo de RatingBar personalizado en StackOverflow respondido solo por mí.

Descargar RatingBar iconos desde aquí: http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

+0

Gracias. Realmente pensé que había una manera más fácil ... –

4

Puede utilizar android:rotation="180" en su Ratingbar para girarla i utiliza de esta manera en mis sólo lectura Ratingbars, no sé si esto afectará a la interacción con el Ratingbar.

+1

, entonces también deberías rotar los drenables en el editor de gráficos, que no es más fácil que establecer la cantidad inversa de estrellas –

+1

Sí, 'android: rotationY = 180' funciona como un encanto. . –

3

Uso atributo 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); 
    } 
} 
Cuestiones relacionadas