Webサービスから受け取ったデータから動的に生成しているフォームがあります。このWebサービスは、入力要素の作成に使用する必要のある画像を提供します。の設定に問題progressDrawable
がありRatingBar
ます。XMLですが、次のものを使用してカスタムイメージを適用できますprogressDrawable
。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+android:id/background" android:drawable="@drawable/custom_star" />
<item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/custom_star" />
<item android:id="@+android:id/progress" android:drawable="@drawable/custom_star" />
</layer-list>
ここcustom_star
で、は単純な.png画像であり@android:style/Widget.RatingBar
、RatingBarスタイルとして使用されます。これは正常に機能します。
しかし、私はcustom_star
動的に変更したいと思っています。
コードでは、ビットマップを直接使用して進行状況の描画可能を設定しようとしました。
Drawable d = new BitmapDrawable(getResources(), downloadedImage);
ratingBar.setProgressDrawable(d);
また、layer-list
:を作成することによって
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] {
getResources().getDrawable(R.drawable.custom_star),
getResources().getDrawable(R.drawable.custom_star),
getResources().getDrawable(R.drawable.custom_star)
});
layerDrawable.setId(0, android.R.id.background);
layerDrawable.setId(1, android.R.id.secondaryProgress);
layerDrawable.setId(2, android.R.id.progress);
ratingBar.setProgressDrawable(layerDrawable);
どちらも私にはうまくいきません。どちらの場合も、 :custom_star
の寸法によって引き伸ばされたドローアブルが1回表示されます。RatingBar
何か案は?
アップデート:
以下のLuksprogの回答は改善されましたが、まだいくつかの問題があります。これで、スタードローアブルは引き伸ばされず、タッチで値を設定できますが、3/5を選択するとそのように表示されます。
および5/5が選択されました:
画像の拡大縮小はいくつかの調整で修正できると思いますが、迷惑なことに、secondaryProgress
ドローアブルが設定されていないようです。ドローアブルは、グレー表示された選択されていない星に使用されます。それがなければ、それはあまり使い物になりません。