2011-09-29 35 views

Trả lời

0

Bạn cần phải tùy chỉnh RatingBar ..

Tuy nhiên bạn chỉ phải chơi thủ đoạn với hiển thị hình ảnh RatingBar & sau đó một số loại tính toán ngược lại.

Thủ thuật sẽ hiển thị ngược Hình ảnh trong RatingBar .. trao đổi hình ảnh đã chọn và không được chọn trong RatingBar.

Cho phép người dùng xếp hạng trên RatingBar. Bạn phải hoán đổi các phép tính đã chọn và không được chọn. Ý tôi là bạn phải tính toán ngược lại.

Hoàn thành Ví dụ hoạt động của tùy chỉnh RatingBar trên số StackOverflow chỉ được trả lời bởi tôi.

Tải RatingBar biểu tượng từ đây: http://developer.android.com/guide/practices/ui_guidelines/icon_design.html

+0

Cảm ơn. Tôi thực sự nhảy có một cách dễ dàng hơn ... –

4

Bạn có thể sử dụng android:rotation="180" trong Ratingbar của bạn để xoay nó tôi được sử dụng theo cách này trên tôi Ratingbars read-only, tôi không biết nếu điều này sẽ ảnh hưởng đến tương tác với Ratingbar.

+1

sau đó bạn cũng nên xoay drawables trong trình soạn thảo đồ họa mà không phải là dễ dàng hơn sau đó chỉ cần thiết lập số lượng đảo ngược sao –

+1

Có, 'android: rotationY = 180' hoạt động như một nét duyên dáng .. . –

3

Sử dụng thuộc tính android:scaleX="-1"

HOẶC

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); 
    } 
} 
Các vấn đề liên quan