2016-06-17 3 views
2

が、私は私のRatingBarウィジェットにカスタム描画可能を追加したい、私はそれを行うにはどのようsomeexamplesを追っ:カスタムRatingBar

1)私は自分のスタイルを作成し、minHeight=16dipmaxHeight=16dip

を設定

2)16px * 16pxのスタードローブを追加しました。

アイコンが変更されましたが、問題は星がぼやけて見える、つまり解像度が低いことです。そして、私はなぜbcsドロワーブルが16 * 16pxであるのか知っていますが、Androidはレーティングバーのアイコンを拡大縮小しないため、品質を良くしません(例えば76px * 76px)。 minHeightとmaxHeightを減らすと、アンドロイドは常にアイコンをトリミングします。 minとmaxのheghtを使用しても結果は同じです - 私の大きなdrawable(私はhdpi、xhdpiのフォルダにdrawableを追加しようとしました)だけで作物を作ってみました。

カスタムRatingBarで私のドロワーブルの解像度を上げる方法はありますか?どうも。

P.S.ここに私のコードは、念のためです:

スタイル:

<style name="CustomRatingBar" parent="@android:style/Widget.RatingBar"> 
    <item name="android:progressDrawable">@drawable/rating_bar_drawable</item> 
    <item name="android:minHeight">16dip</item> 
    <item name="android:maxHeight">16dip</item> 
</style> 

rating_bar_drawable.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@android:id/background" android:drawable="@drawable/car_washes_star_empty" /> 
<item android:id="@android:id/secondaryProgress" android:drawable="@drawable/car_washes_star_fill" /> 
<item android:id="@android:id/progress" android:drawable="@drawable/car_washes_star_fill" /> 

はmain.xml:

<RatingBar 
      android:id="@+id/car_washes_list_item_rating_bar" 
      style="@style/CustomRatingBar" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="@dimen/car_washes_item_rating_bar_margin_right" 
      android:layout_marginRight="@dimen/car_washes_item_rating_bar_margin_right" 
      android:numStars="5"/> 
+3

可能な重複をたくない場合は、ウルPICのサイズをチェックし、高さとして設定[RatingBarのスター画像を変更するには?](http://stackoverflow.com/questions/607610/how-to-change-the-star-images-of-the-ratingbar) –

+0

いいえ、そうではありませんが、私はドロウアブルを変更しましたが、低品質です –

答えて

2

私も試してみましたカスタム評価スタイルoncを使用するAndroidと私の経験でeが悪かったので、私はネイティブsytlesを使用することをお勧めしていることを学び、その後、あなたがの色を変更したい場合は

<RatingBar 
    android:id="@+id/ratingBar" 
    android:isIndicator="false" 
    android:numStars="5" 
    android:stepSize="1.0" 
    style="?android:attr/ratingBarStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="45dp" 
    android:layout_centerHorizontal="true" 
    android:layout_below="@+id/linearLayoutLoginFailed" 
    android:progressTint="@android:color/white" 
    /> 

とあなたのクラスで以下のようにクラスファイルに色をcutomize yoru評価星はこのコードを追加します

LayerDrawable layerDrawable =(LayerDrawable)ratingBar.getProgressDrawable();

// Unfilled star color 
    DrawableCompat.setTint(DrawableCompat.wrap(layerDrawable.getDrawable(2)), 
      Color.WHITE); 
3

描画可能にcustom_ratingbar_selector.xmlを作成し、このコード

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:id="@android:id/background" 
android:drawable="@drawable/unslected_star_icon" /> 

<item android:id="@android:id/secondaryProgress" 
android:drawable="@drawable/unslected_star_icon" /> 

<item android:id="@android:id/progress" 
android:drawable="@drawable/slected_star_icon" /> 

</layer-list> 
  • レイアウト活動での使用この

    <RatingBar 
    android:id="@+id/ratingBar2" 
    android:layout_width="wrap_content" 
    android:layout_height="21dp" 
    android:progressDrawable="@drawable/custom_ratingbar_selector" 
    android:numStars="5" 
    android:stepSize="1" 
    android:rating="3.0" /> 
    

    を貼り付け

    1. この例を試してみてください注:

    私のPICのDIMENはので、私は評価バーの高さは21dpで取る* 21 22です.... uはディスプレイにのunaccurately

  • 関連する問題