将Drawable放在按钮的右侧

时间:2016-09-06 05:32:57

标签: java android radio-button drawable oncheckedchanged

我正在开发一个可以生成多项选择题的应用。当用户选择一个按钮(单选按钮)时,它会在所选答案旁边放置一个 X(如果错误)或V(如果正确)的图像。我创建了包含所有按钮的RadioGroup并使用了OnCheckedChanged Listener。我追踪并放置了打印语句,以确保它有效。但是,除了第一次用户按下之外,它根本不显示可绘制的图像。

所以换句话说,用户会按下其中一个按钮,会看到反馈(V或X),但是然后按下一个不同的按钮,看不到任何东西,虽然逻辑DOES工作(我在if里面使用了print语句) )。我使用SetCompoundDrawableWithIntrinsicBounds它就可以了。有没有人知道如何解决这个问题?

我花了最后8个小时来处理这个问题并且非常沮丧。

听众代码

 @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            //get the index of the correct answer

            int indexAnswer = Integer.parseInt(myQuestion.getAnswer()) - 1;
            for (int i = 0; i < possibleAnswers.length; i++) {
                //if the button at position i was pressed
                if (checkedId == possibleAnswers[i].getId()) {
                    //if its the correct answer
                    if (i == indexAnswer) {
                        Log.i("MyAcitvity", "thats correct");
                        possibleAnswers[i].setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.checkmark, 0);
                    }
                    else {
                        Log.i("MyActivity", "thats wrong");
                        possibleAnswers[i].setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.wrong, 0);
                    }

                } else {
                    possibleAnswers[i].setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
                }
            }
        }
    });

谢谢你们有一个美好的一天。

1 个答案:

答案 0 :(得分:0)

我认为最好先拿出单选按钮,然后再改变它。

View radioButton = group.findViewById(i);
radioButton.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.checkmark, 0);

为了更好的答案,请添加所有代码,特别是与您的无线电组相关的代码