1

AlertDialogにRatingBarを表示しようとしています(ハンドラーから定期的に呼び出されます)。

私の問題は、星の数を変更できないことです。そこにはたくさんの答えがあることは知っていますが、常にxmlを通過するので、私は望んでいません。

誰か助けてもらえますか?

public void taskRatingPopup() {
    final AlertDialog.Builder popDialog = new AlertDialog.Builder(this);
    final RatingBar rating = new RatingBar(this);
    rating.setMax(5);
    rating.setNumStars(5);
    rating.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));


    popDialog.setIcon(android.R.drawable.btn_star_big_on);
    popDialog.setTitle("BlaBla");
    popDialog.setView(rating);

    // Button OK
    popDialog.setPositiveButton(android.R.string.ok,
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {

    writeRatingFile(rating.getProgress());

    //Remove the dialog
    dialog.dismiss();
    }

    })

    // Button Cancel
    .setNegativeButton("Cancel",
    new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int id) {
    dialog.cancel();
    }
    });

    popDialog.create();
    popDialog.show();
}

助けてくれてありがとう!

4

2 に答える 2

0

いいえを追加するため。評価バーの星の数を取得して、このタグを使用してください。

rb_rate.setNumStars(<no.of stars,integer value>);
于 2014-12-30T06:45:00.787 に答える
0
//code block
        public void itemRatingPopup() {
            final AlertDialog.Builder popDialog = new AlertDialog.Builder(
                    mainScreen);
            final RatingBar rating = new RatingBar(mainScreen);
            rating.setNumStars(5);
            rating.setStepSize(0.1f);
            rating.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
            LinearLayout parent = new LinearLayout(mainScreen);
            parent.setGravity(Gravity.CENTER);
            parent.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
                    LayoutParams.MATCH_PARENT));
            parent.addView(rating);

            // popDialog.setIcon(android.R.drawable.btn_star_big_on);
            popDialog.setTitle(mainScreen.getResources().getString(
                    R.string.user_ratings));
            popDialog.setView(parent);

            // Button OK
            popDialog.setPositiveButton(R.string.submit,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            String fanid = StorageManager.getInstance()
                                    .getSharedPrefs(mainScreen)
                                    .getString(AppConstants.PREFS_FAN_ID, "0");
                            if (fanid != null) {
                                new SubmitUserRatingAsyncTask("Item", ""
                                        + item.getId(), fanid, rating.getRating())
                                        .execute();
                            }
                            dialog.dismiss();
                        }
                    }).setNegativeButton(R.string.cancel,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });
            popDialog.create();
            popDialog.show();
        }

あなたのダイアログ UI は正確に 5 つの星を表示しません。RatingBar を Dialog のルート ビューとして割り当てているため、任意の数の開始が表示される場合があります。参考として、上記のコードを参照してください。

    you can change rating programatically by below code:
    float myRating=0f;
    rating.setRating(myRating)
于 2013-07-04T10:49:22.460 に答える