3

我正在开发我的第一个 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);
}

android:background="@color/black"除了设置LinearLayout 以提供纯色背景而不是主题使用的渐变之外,我没有对外观进行任何更改。

4

1 回答 1

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);

这将在正常状态下使用“颜色”,在按下或选择 TextView 时使用“highlightedColor”。有关可能状态的列表,请参阅R.attr。您可能对 state_checked 感兴趣,但我没有测试过这种情况。

于 2014-05-02T23:34:35.243 回答