在按钮右侧放置一个 Drawable [重复]

Posted

技术标签:

【中文标题】在按钮右侧放置一个 Drawable [重复]【英文标题】:Placing a Drawable to the right of a button [duplicate] 【发布时间】:2017-01-13 10:55:51 【问题描述】:

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

换句话说,用户将按下其中一个按钮,将看到反馈(V 或 X),但随后按下不同的按钮并不会看到任何内容,尽管逻辑确实有效(我在 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】:

我认为最好先获取单选按钮,然后像这样更改它。

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

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

【讨论】:

以上是关于在按钮右侧放置一个 Drawable [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在屏幕的左侧和右侧放置 Angular Material 单选按钮?

如何将选择按钮放置在节目安排扩展面板的右侧?

UILabel 使用 AutoLayout 实现具有居中放置和右侧按钮的 autoheight

为 EditText 的 Drawable 权限设置 onClickListener [重复]

如何在右侧创建一个带有图标的按钮?

无法保存表单的多个值[重复]