2011-09-29 53 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); 
    } 
} 
相關問題