我正在处理我的第一个Android应用,而且我在外观方面遇到了一些问题。我以编程方式将单选按钮添加到以线性布局定义的单选按钮组中。我使用了黑暗主题,当布局中定义的任何元素获得焦点时,它们会以黄色突出显示:具有焦点的按钮具有整体黄色高光,而具有焦点的复选框具有黄色文本。但是对于动态添加的单选按钮,当单选按钮获得焦点时,文本会变为黑色(与背景相同)。
如何指定动态添加的单选按钮在焦点上使用与其他元素相同的样式,或者为主题指定自定义焦点样式?
这是我用来添加单选按钮的代码:
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroupVersions);
RadioGroup.LayoutParams rprms;
for(int i=0;i<installedVersionName.size();i++)
{
RadioButton radioButton = new RadioButton(this);
radioButton.setText(installedVersionName.get(i));
radioButton.setId(i);
rprms = new RadioGroup.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
radioGroup.addView(radioButton, rprms);
}
除了为LinearLayout设置android:background="@color/black"
以提供纯色背景而不是主题使用的渐变之外,我还没有改变外观。
答案 0 :(得分:0)
您可以使用TextView.setTextColor(ColorStateList)来实现此目标。
要创建ColorStateList,只需使用不同的“个案”初始化您感兴趣的状态标志组合。例如:
ColorStateList colors = new ColorStateList(
new int[][] {
new int [] { android.R.attr.state_pressed },
new int [] { android.R.attr.state_selected },
new int[0],
},
new int[] {
highlightedColor,
highlightedColor,
color,
});
tv.setTextColor(colors);
这将在正常状态下使用“color”,在按下或选择TextView时使用“highlightedColor”。有关可能状态的列表,请参阅R.attr。您可能对state_checked感兴趣但我没有测试过这种情况。