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

これは、通常の状態では「color」を使用し、TextView が押されているか選択されている場合は「highlightedColor」を使用します。可能な状態のリストについては、R.attrを参照してください。あなたはおそらく state_checked に興味がありますが、私はそのケースをテストしていません。

于 2014-05-02T23:34:35.243 に答える