2011-09-29 77 views

回答

0

你必须定制RatingBar ..

但是你不得不与显示RatingBar图片&然后某种反向计算做手脚。

窍门将在RatingBar中显示反转图像..在RatingBar中交换选定和未选择的图像。

允许用户对RatingBar进行评级。你必须交换选择和未选择的计算。我的意思是你必须做反向计算。

自定义RatingBar的完整工作示例StackOverflow仅由我回答。

从这里下载RatingBar图标:http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

+0

感谢。 我真的跳了有一个更简单的方法... –

4

你可以在你的RatingBar使用android:rotation="180"将它旋转 我用我的只读Ratingbars这样,我不知道这是否会影响与互动的RatingBar。

+1

那么你也应该旋转画图在图形编辑器,这是不容易的,然后只是设置反向数量的星 –

+1

是的,'android:rotationY = 180'就像一个魅力.. 。 –

3

使用属性:android:scaleX="-1"

OR

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); 
    } 
} 
相关问题